今回は CATransitionを使ったトランジションを試してみる。
iOS Reference Library 提供のサンプル
"Transition"ボタンを押すとランダムに選ばれたトランジション効果が適用される。
ViewTransitions
トランジションの種類は4種類。さらにサブタイプ(方向を決める)を持つものがある。
CAAnimation.h より
CA_EXTERN NSString * const kCATransitionFade
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
CA_EXTERN NSString * const kCATransitionMoveIn
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
CA_EXTERN NSString * const kCATransitionPush
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
CA_EXTERN NSString * const kCATransitionReveal
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);これを参考にサンプルを作ってみよう。
ソースコード
とりあえず凝ったことはしないで一番シンプルな作りにした。
2つの UIImageView を予めInterfaceBuilderで用意しておく。
@interface TransitionSample2ViewController : UIViewController {
UIImageView* imageView1;
UIImageView* imageView2;
UISlider* slider;
UILabel* duration;
NSMutableArray* images;
NSInteger imageIndex;
}
@property (nonatomic, retain) IBOutlet UIImageView* imageView1;
@property (nonatomic, retain) IBOutlet UIImageView* imageView2;
@property (nonatomic, retain) IBOutlet UISlider* slider;
@property (nonatomic, retain) IBOutlet UILabel* duration;
@property (nonatomic, retain) NSMutableArray* images;
-(IBAction)didChangeDuration:(id)sender;
-(IBAction)doTransition:(id)sender;
@endトランジション処理。CATransition を使うのと、2つの UIImageViewを切り替えるのがミソ。
-(IBAction)doTransition:(id)sender;
{
// setup next image
imageIndex = (imageIndex+1)%8;
imageView2.image = [images objectAtIndex:imageIndex];
CATransition* transition = [CATransition animation];
transition.duration = self.slider.value;
transition.timingFunction = [CAMediaTimingFunction
functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionFade;
[self.view.layer addAnimation:transition forKey:nil];
imageView1.hidden = YES;
imageView2.hidden = NO;
UIImageView* tmp = imageView2;
imageView2 = imageView1;
imageView1 = tmp;
}このあたりは Mac OS X と変わらない。以下は過去 Mac OS X でやったときのブログ。
(旧) Cocoaの日々: スライドトランジション
(旧) Cocoaの日々: 波紋(その1)
Mac OS X の場合は Core Image をアニメーションエフェクトに使えるのでさらに派手な効果が出せる。
なお CATransition 利用には QuartzCore.framework を追加し、QuartzCore.hを読み込んでおく必要がある。
#import <QuartzCore/QuartzCore.h>
自作サンプル
実行してみよう。
ボタンを押すと次の画像にジワジワと切り替わる。
ソースコードは GitHub からどうぞ。
TransitionSample2 at 2010-10-01 from xcatsan's iOS-Sample-Code - GitHub
- - - - -
CATransition は他にもあるので試してみよう。









Responses
Leave a Response