5

ビューコントローラーを半透明で全画面表示して、その下のビューがまだ見えるようにしたいと思います。次のコードは新しい View Controller を示していますが、現在のものを置き換えます。元のView Controllerを見えるようにしておく最善の方法は何ですか? 新しいビュー コントローラーのビューは、半透明の黒の背景になります。

NewViewController* newVC = [[NSClassFromString(@"NewViewController") alloc] initWithNibName:deviceNib bundle:nil];
newVC.modalPresentationStyle = UIModalPresentationFullScreen;
newVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;


[self presentViewController:newVC animated:YES completion:NULL];
4

2 に答える 2

6

ビュー コントローラーではなく、半透明のビューを表示します。

mySemiTransparentView.alpha = 0.0f;
[self.view addSubview:mySemiTransparentView];

mySemiTransparentView はフルスクリーン ビューです。あなたはそれを所定の位置にアニメーション化することができます:

[UIView beginAnimations:@"fadeIn" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDuration:0.4f];
mySemiTransparentView.alpha = 0.5f;
[UIView commitAnimations];
于 2012-08-09T20:17:28.607 に答える
2

次の方法で、半透明のモーダル コントローラーを表示できます。

NewViewController* newVC = [[NSClassFromString(@"NewViewController") alloc] initWithNibName:deviceNib bundle:nil];

self.modalPresentationStyle = UIModalPresentationCurrentContext;
newVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;

[self presentViewController:newVC animated:YES completion:NULL];

ここで、定数UIModalPresentationCurrentContextnewVC .modalPresentationStyleではなく、self .modalPresentationStyle に設定する必要があることに注意してください。

さらに、 UIModalTransitionStyleCrossDissolve を使用すると、遷移中にnewVC.viewのアルファがオーバーライドされるため、半透明の背景が必要な場合は、newVC.viewbackgroundColorをクリアに保ち、サブビューとして別の UIView を追加するだけで済みます半透明の背景色

于 2014-07-18T06:12:59.293 に答える