Xcode 9中UIScreen.main.bounds异常问题求助
UIScreen.main.bounds 始终返回 (0.0, 0.0, 320.0, 480.0) 的问题解决
问题背景
最近碰到一个诡异的问题:不管是在模拟器还是iPhone X真机上,UIScreen.main.bounds的取值一直固定为 (0.0, 0.0, 320.0, 480.0)。我在AppDelegate里的初始化代码一直都是这么写的,之前从来没出过问题,这次突然就失效了:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. window = UIWindow() let vc = LoginViewController() let navigationController = UINavigationController(rootViewController: vc) self.window?.rootViewController = navigationController self.window!.makeKeyAndVisible() navigationController.setNavigationBarHidden(true, animated: false) return true }
问题原因与解决方案
折腾了好一阵才找到根源:千万别删除项目里的LaunchScreen.storyboard文件!
iOS系统是通过启动屏文件(LaunchScreen.storyboard)来识别应用应该适配的屏幕尺寸的,如果把这个文件删掉了,系统会默认回退到初代iPhone的320x480分辨率,自然就导致UIScreen.main.bounds返回错误的尺寸。
只要把LaunchScreen.storyboard恢复回来(或者确认它已经正确配置为应用的启动屏幕),这个问题就能立刻解决,UIScreen.main.bounds也会正常返回当前设备的真实屏幕尺寸。
内容的提问来源于stack exchange,提问作者petaire
相关产品推荐
相关产品推荐

