3

私は検索によってこれらの問題のいくつかを見てきましたが、主にストーリーボードに関連しています。

私は単に実用的にモーダルビューコントローラを作成しています。これは実際には到達可能性で使用するためのものです。接続がNotReachableと見なされたら、次のようなモーダルビューコントローラーを提示します。

-(void)checkConnection: (Reachability*) curReach {
    NetworkStatus netStatus = [curReach currentReachabilityStatus];
        if (netStatus == NotReachable) {
            NSLog(@"inernet reach - not reachable");

            UIViewController *modalViewController = [[MESConnectionModalViewController alloc] init];
            modalViewController.view.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.2f];
            modalViewController.view.opaque= YES;
            [self.window.rootViewController presentModalViewController:modalViewController animated:YES];

}
}

ビューコントローラ内MESConnectionModalViewControllerには現在、コードはなく、標準のみです。

モーダルビューが現在のビューに移行されているとき、背景は正しく見えます(これは、ほんの1〜2秒です)。モーダルが画面上に完全に表示されると、部分的に黒ではなく、完全に黒になります。基本的に現在の内容を少しカバーしたいと思っています。上記のコードはアプリデリゲートに含まれており、到達可能性が更新されるたびに呼び出されるため、インターネット接続が解決されている間、モーダルビューコントローラーを表示しようとしています。

4

2 に答える 2

5

モーダル ビューは透明度をサポートしていませんでした (iPhone の場合)。
ただし、「UIView」を親ビューに追加して、アニメーション化することができますCoreAnimation

編集

-(void)checkConnection: (Reachability*) curReach {
    NetworkStatus netStatus = [curReach currentReachabilityStatus];
    if (netStatus == NotReachable) {
        NSLog(@"internet reach - not reachable");
        UIViewController *modalViewController = [[MESConnectionModalViewController alloc] init];
        //Set y position to animate it
        CGRect frame = modalViewController.view.frame;
        frame.origin.y = [[UIApplication sharedApplication] keyWindow].frame.size.height;
        modalViewController.view.frame = frame;
        modalViewController.view.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.2f];
        [self.view addSubview:modalViewController.view];
        //Animate appearing
        frame.origin.y = 0;
        [UIView animateWithDuration:0.2 animations:^{
            modalViewController.view.frame = frame;
        }];
    }
}

modalViewControllerまた、将来アクセスするためにプロパティとして保存することもできます。

于 2013-03-17T22:27:57.950 に答える
1

必要なのは、すべての上に UIAlertView のようなものを作成できるクラスの 2 番目UIWindowです! AppDelegateそれがあなたが必要としているものだと私を信じてください、そして必ず設定してください

myWindow2.windowLevel = UIWindowLevelAlert;

ウィンドウにアクセスするには(ポインタを取得します):

UIWindow *myWindow2 = [(AppDelegate *)[UIApplication sharedApplication].delegate myWindow2];
于 2013-03-18T01:04:02.867 に答える