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中目前没有代码,只有标准。

当模态视图转换到当前视图时,背景看起来是正确的(这是一两秒钟)。一旦模态完全在屏幕上,它就是全黑的,而不是部分黑的。我希望基本上稍微涵盖当前内容。上面的代码是应用程序委托中的 seutp 并在可达性更新时调用,因此我试图在解决互联网连接时显示模式视图控制器。

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

你需要的是UIWindowAppDelegate课堂上的第二个,你可以在一切之上制作像 UIAlertView 这样的东西!相信我这就是你需要的,并确保设置

myWindow2.windowLevel = UIWindowLevelAlert;

访问您的窗口(获取指针):

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