从 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 行