3

我在另一个上添加了一个新的 UIWIndow 来显示一个视图,但它没有显示任何内容,并且屏幕变得有点模糊。这是代码:

UIWindow* topWindow = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
[topWindow setWindowLevel:UIWindowLevelNormal];

CGFloat statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height;

UIViewController* viewController = [[UIViewController alloc] init];
UIView* overlay = [[UIView alloc] initWithFrame:CGRectMake(0, -statusBarHeight,   viewController.view.frame.size.width, statusBarHeight - 1)];
[overlay setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
[overlay setBackgroundColor:[UIColor whiteColor]];
[viewController.view addSubview:overlay];
[topWindow setRootViewController:viewController];

[topWindow setHidden:NO];
[topWindow setUserInteractionEnabled:NO];
[topWindow makeKeyAndVisible];

viewController = nil;

overlay = nil;

我究竟做错了什么?

4

3 回答 3

4

我也想和你一样。

@implementation TAAppDelegate {
    UIWindow *win;
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.

    double delayInSeconds = 2.0;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
        win = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        win.rootViewController = [UIViewController new];
        win.rootViewController.view.backgroundColor = [UIColor whiteColor];
        win.rootViewController.view.alpha = 0.5;
        [win makeKeyAndVisible];
    });
    return YES;
}
.....

我做到了。我认为你应该保留你的新 UIWindows。(我正在使用 ARC,所以我定义了 1 个本地变量来保留它)

祝你好运!

于 2014-03-06T03:19:43.953 回答
2

将 windowLevel 属性设置为另一个值。我通常使用:

topWindow.windowLevel = UIWindowLevelAlert + 1;
于 2013-10-11T10:20:18.387 回答
1

你为什么要创建第二个窗口来覆盖主窗口?

来自苹果文档:

“一个 UIWindow 对象协调屏幕上一个或多个视图的呈现。大多数应用程序只有一个窗口,它在主屏幕上呈现内容,但应用程序可能有一个额外的窗口,用于在外部显示器上显示内容。”

您应该以模态方式展示您的附加 viewController 或使用“UIViewController 包含”。都在一个窗口内。

于 2013-10-11T11:19:41.993 回答