UIModalTransitionStyleCoverVertical のようなアニメーション

UIViewController でモーダルビューを表示するメソッド presentModalViewController:animated: の画面遷移アニメーションのスタイルは、デフォルトだと画面下からビューがせせり出てくる UIModalTransitionStyleCoverVertical になっています。結構気持ち良いので、これと同じアニメーションを、自分の UIView でも実装してみるテスト。というか、大人の事情により途中まで書いていてボツになったので、もったいなので、ここで書き上げてみます。

UIViewController内で UIView をモーダルで表示させたいメソッド内で、次のようなアニメーションを組めばOKのはず。

UIView *myView = [[UIView alloc] init];
/*
  View 生成する処理むにゃむにゃ
 */

// 初期位置を決める CGPoint p; if (self.interfaceOrientation == UIInterfaceOrientationPortrait || self.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) { p = CGPointMake(0.0, CGRectGetHeight([[UIScreen mainScreen] applicationFrame])); } else { p = CGPointMake(0.0, CGRectGetWidth([[UIScreen mainScreen] applicationFrame])); } CGRect r = myView.frame; r.origin = p; [myView setFrame:r];
// Animation CGContextRef context = UIGraphicsGetCurrentContext(); [UIView beginAnimations:nil context:context]; [UIView setAnimationDuration:0.5]; [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; CGRect newRect = myView.frame; newRect.origin = CGPointMake(0, 0); [myView setFrame:newRect]; [UIView commitAnimations];
[self.view addSubview:myView]; [myView release];

ちなみに、UIModalTransitionStyleCoverVertical の animationCurve は UIViewAnimationCurveLinear かもしれません。個人的には EaseInOut が一番気持ちいいのでそれにしているだけです。

このエントリーのトラックバックURL
http://www.deftrash.com/admin/mt4/mt-tb.cgi/535