さまざまなデータを表示するメインUIViewがあります。次に、次のようなサブビューを表示するボタンを配置します。
- (IBAction) buttonClicked:(id)sender
{
UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(25,25,50,20)];
UILabel *newLabel = [[UILabel alloc] initWithFrame:CGRectMake(25,25,50,25)];
newLabel.text = @"some text";
[newView addSubview:newLabel];
[self.view addSubview:newView];
[newLabel release];
[newView release];
}
newViewは正常に表示されますが、それ自体はアニメーション化されず、ただちに表示されます。 newViewが表示されたときに何らかのアニメーションを追加するにはどうすればよいですか?ズームやスライドダウンなどのようなものです。簡単なコードはありますか?
こんにちはUIView Animationsを使用できます。
[newView setFrame:CGRectMake( 0.0f, 480.0f, 320.0f, 480.0f)]; //notice this is OFF screen!
[UIView beginAnimations:@"animateTableView" context:nil];
[UIView setAnimationDuration:0.4];
[newView setFrame:CGRectMake( 0.0f, 0.0f, 320.0f, 480.0f)]; //notice this is ON screen!
[UIView commitAnimations];
SDKはこれを自動的に判断し、指定した位置に合わせてビューをアニメーション化します。これは、UIViewのほとんどのプロパティ(アルファ、スケール、境界、フレームなど)で機能します。
また、フリップおよびカールなどのアニメーションが組み込まれています。
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight
forView:newView
cache:YES];
[self.navigationController.view addSubview:settingsView.view];
[UIView commitAnimations];
これがあなたが始めるのに役立つことを願っています:)
[UIView transitionWithView:containerView duration:0.5
options:UIViewAnimationOptionTransitionCurlUp //change to whatever animation you like
animations:^ { [containerView addSubview:subview]; }
completion:nil];
quarzCoreフレームワークに対するリンク
#import <QuartzCore/QuartzCore.h>
CATransition *transition = [CATransition animation];
transition.duration = 1.0;
transition.type = kCATransitionPush; //choose your animation
[newView.layer addAnimation:transition forKey:nil];
[self.view addSubview:newView];
これをSwiftで行いましょう。
var redView = UIView(frame:CGRectMake(20,20,100,100))
redView.backgroundColor = UIColor.redColor
redView.alpha = 0.0
view.addSubview(redView)
UIView.animateWithDuration(0.25) { () -> Void in
redView.alpha = 1.0
}
サブビューの追加は、単にanimateWithDurationブロックに入れるだけではアニメーション化できません。また、hiddenを使用してアニメーション化することはできません。
アニメーションブロックとオプションを使用しても、addSubview
だけをアニメーション化しようとしても何の効果もありません。サブビューのアルファを0.0に設定し、サブビューを追加してから、アルファの設定を0.0から1.0にアニメートする回避策を見つけました。これにより、探していたフェードイン効果が得られます。
これが他の人の助けになることを願っています。
UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 100, 100)];
redView.backgroundColor = [UIColor redColor];
redView.alpha = 0.0;
[self.view addSubview:redView];
[UIView animateWithDuration:0.5 animations:^{
redView.alpha = 1.0;
}];