从 AppDelegate 加载 Storyboard 会在窗口上留下黑色空间

Posted

技术标签:

【中文标题】从 AppDelegate 加载 Storyboard 会在窗口上留下黑色空间【英文标题】:Loading Storyboard from AppDelegate leaves black space on window 【发布时间】:2014-12-28 13:53:47 【问题描述】:

我正在从AppDelegate 启动Storyboard,但屏幕顶部和底部出现黑色空间。这是我的代码:

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

    [[UINavigationBar appearance] setTitleTextAttributes:@NSForegroundColorAttributeName: [UIColor whiteColor]];
    [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
    UIViewController *vc =[storyboard instantiateInitialViewController];

    // Set root view controller and make windows visible
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.rootViewController = vc;
    [self.window makeKeyAndVisible];

    return YES;
  

这是它的样子:

【问题讨论】:

是否有理由使用所有代码而不是设置初始视图控制器(在情节提要中)并让默认应用初始化加载主情节提要? @PhillipMills :是的。我希望我的导航标题以白色显示。我正在使用 [[UINavigationBar appearance] setTitleTextAttributes:@NSForegroundColorAttributeName: [UIColor whiteColor]]; [[UINavigationBar 外观] setTintColor:[UIColor whiteColor]];我在 AppDelegate 中设置的。但是,故事板首先启动,因为它是启动屏幕。当它启动时,导航上会出现黑色标题。然后调用 AppDelegate 将标题设置为白色。因此,为了避免在启动时改变导航标题的颜色,我正在这样做。 @PhillipMills :如果你能帮我从故事板本身设置导航标题颜色,我不会做这一切。 appearance 设置放在应用程序委托或第一个视图控制器的+ (void)initialize 方法中似乎可以工作,并让自动机制负责故事板/控制器/窗口连接。跨度> @PhillipMills :刚刚尝试了您的建议,但仍然面临同样的问题。似乎在 Storyboard 启动后调用了初始化。 【参考方案1】:

这可能是因为您没有 Default-568h@2x.png 启动图像。

尝试添加一张或使用资产目录中的启动图片,并使用 iPhone 5 尺寸的一张。

(也就是:self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 是必要的,它会返回您所期望的吗?)

【讨论】:

感谢您的解决方案。

以上是关于从 AppDelegate 加载 Storyboard 会在窗口上留下黑色空间的主要内容,如果未能解决你的问题,请参考以下文章

从 AppDelegate 加载 Storyboard 会在窗口上留下黑色空间

需要从 appdelegate 加载 UIViewController 并在 Storyboard App 中加载时隐藏 UITabBarController

每次将视图控制器压入堆栈时,如何从 appDelegate 重新加载视图控制器?

从 AppDelegate Swift 4 更新 tableView 行

在 Swift 中从 AppDelegate 加载嵌入到 UINavigationController 的控制器

Swift:如何在测试期间不加载 AppDelegate