私のiPhoneアプリでは、背景が透明なモーダルビューを表示する必要があります。これは、ビューの中心から表示され、サイズが大きくなっているように、アニメーションで表示されるはずです。
設定ボタンをクリックしたときの「何かを描く」iPhoneアプリのようなものです。
どうすればよいですか?
私のiPhoneアプリでは、背景が透明なモーダルビューを表示する必要があります。これは、ビューの中心から表示され、サイズが大きくなっているように、アニメーションで表示されるはずです。
設定ボタンをクリックしたときの「何かを描く」iPhoneアプリのようなものです。
どうすればよいですか?
提示したい aScoreSheet と呼ばれる viewController があるとします。プレゼンテーションを行うView Controllerでこのメソッドを定義してみてください。
-(void) presentTransparentModalViewController: (ScoreSheet *) aViewController
{
scoreSheet = aViewController;
UIView *view = aViewController.view;
view.opaque = NO;
[view.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
UIView *each = obj;
each.opaque = NO;
}];
[self.view addSubview:view];
view.center = CGPointMake(160, 800); //for iPhone
[UIView animateWithDuration:0.9 delay:0 options:UIViewAnimationCurveEaseInOut animations:^{
view.center = CGPointMake(160, 240);
} completion:^(BOOL finished) {
self.view.userInteractionEnabled=YES;
}];
}
次に、コントローラーを閉じます。
-(void) dismissTransparentModalViewControllerAnimated:(BOOL) animated{
if (animated) {
[UIView animateWithDuration:0.4
animations:^{
scoreSheet.view.center = CGPointMake(scoreSheet.view.center.x, scoreSheet.view.center.y + 480);
} completion:^(BOOL finished) {
[scoreSheet.view removeFromSuperview];
scoreSheet = nil;
}];
}
}
次の 4 つのトランジション スタイルのいずれかを実行できます。
viewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
viewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
viewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
viewController.modalTransitionStyle = UIModalTransitionStylePartialCurl;
[self presentModalViewController:viewController animated:YES];
これらのデフォルトに含まれていないものが必要な場合は、モーダル ビューを表示するための独自のカスタム アニメーションを作成する必要があります。次のようにしますが、明らかにあなたが望むスタイルです。
完全な答えではありませんが、次のオープン ソース ライブラリをご覧ください。
https://github.com/Split82/HMGLTransitions
いくつかのカスタム モーダル トランジションがあり、探しているトランジションではないかもしれませんが、サブクラス化することでトランジションを簡単に追加できますHMGLTransition
。
お役に立てれば