前回のコードに手を入れていろいろなトランジションを試してみよう。
サンプル
まずは実行画面から。4つのタイプと4つのサブタイプが選べる。
Fade-right でトランジション実行
実装
UISegmentedControl を2つ配置して、これらで CATransition.type, subType を指定する。追加したのはそれだけ。
@property (nonatomic, retain) IBOutlet UISegmentedControl* mainType; @property (nonatomic, retain) IBOutlet UISegmentedControl* subType;
// transition CATransition* transition = [CATransition animation]; transition.duration = self.slider.value; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; NSString *maintypes[4] = {kCATransitionMoveIn, kCATransitionPush, kCATransitionReveal, kCATransitionFade}; NSString *subtypes[4] = {kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom}; transition.type = maintypes[mainType.selectedSegmentIndex]; if (mainType.selectedSegmentIndex < 3) { transition.subtype = subtypes[subType.selectedSegmentIndex]; }UISegmentedControlは、本当はこんな使い方しないんだろうけれど ;;
備考
アニメーションを行うビューを UIViewController のビューにした場合、画面全体がトランジション対象になる。
[self.view.layer addAnimation:transition forKey:nil];
[self.baseView.layer addAnimation:transition forKey:nil];
なお Fade と MoveIn の場合はベースのビューの外側もアニメーションで使われる。以下は MoveIn+Top とした場合の例。
ソースコード
GitHub からどうぞ。 xcatsan's iOS-Sample-Code at 2010-10-02 - GitHub
Responses
Leave a Response