6

Tweetbot 3 のように、すべてのビューに暗い画面を追加し、その上に通知ウィンドウを表示したいと考えています。

ここに画像の説明を入力

ただし、これがどのように達成されるかは完全にはわかりません。

以下のように、フレームとして画面のサイズで暗いビューを追加すると機能しません: (ナビゲーション バーとステータス バーはカバーされません)。

UIView *darkOverlay = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
darkOverlay.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5];
[self.view insertSubview:darkOverlay behindSubview:self.view];

これはステータスバーを除くすべてをカバーしています(かなり近いですが、ステータスバーのコンテンツが軽いので、それでも非常に不快です):

[[[UIApplication sharedApplication] keyWindow] addSubview:darkOverlay];

では、このようなことはどのように達成されるのでしょうか。

4

4 に答える 4

3

この方法を試すことができます

    UIWindow* window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    window.windowLevel = UIWindowLevelAlert;
    window.opaque = NO;

    [window addSubview:someView];

    // window has to be un-hidden on the main thread
    [window makeKeyAndVisible];

「view」はカスタムポップアップです。

于 2013-11-11T14:08:56.127 に答える
1

モーダル ビュー コントローラーはナビゲーション コントローラーの上にあるため、単純にモーダルで表示することができます。

TransparancyViewController *vc=[[TransparancyViewController alloc]initWithNibName:@"TransparancyViewController" bundle:nil] ;
vc.view.backgroundColor = [UIColor clearColor];
navController.view.alpha = 0.3;
navController.modalPresentationStyle = UIModalPresentationCurrentContext;
[navController presentViewController:vc animated:NO completion:nil];

ストーリーボードで使用するための小さなサンプル プロジェクト.. http://cl.ly/442C11341k2G

于 2013-11-05T00:56:54.393 に答える
0

darkOverlayView を作成するときは、画面全体を占めるビューの実際の境界を指定する方がよい場合があります (使用する iPhone 5 の幅と高さ)。

UIView *darkOverlay = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320, 568)];

通知オブジェクトも UIView である場合は、これを前面に移動します。

[self.view addSubView:darkOvelay]
[self.view bringSubviewToFront:notificationView];

これで問題が解決することを願っています、乾杯、ジム。

于 2013-11-05T00:45:52.013 に答える