You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:36:44