UIScreen 主边界不考虑实际设备屏幕尺寸
UIScreen main bounds does not respect actual device screen size
我想创建一个没有任何故事板的项目。
我已经删除了 Main 和 LaunchScreen 故事板。
像往常一样,我添加到我的 applicationDidFinishLaunchingWithOptions:
window = UIWindow(frame: UIScreen.main.bounds
window?.rootViewController = ViewController()
window?.makeKeyAndVisible()
现在在项目设置 -> 常规中,如果我将启动屏幕文件留空 UIScreen.main.bounds
是
(CGRect) $R12 = (origin = (x = 0, y = 0), size = (width = 320, height = 480))
我得到以下屏幕:
现在,如果我在 Launch Screen File
字段中添加一些内容,在 Info.plist -> Information 属性 List a new line with key Launch screen interface file base name
出现并且边界是正确的.即使值为空,边界也是正确的。
为什么 Launch screen interface file base name
的存在会影响 UIScreen 边界?
它开始于 iOS 8.0,当时 iPhone 6/6plus 发布(TheFuquan 用户评论它开始于 iPhone 5 版本),2014 年。如果你想回到那个时候要支持此类新设备,您肯定需要添加适当的启动屏幕。通过为您支持的每个设备使用不同尺寸的静态图像,或者通过 xib/storyboards.
现在,您已经解决了您的困惑。解决这个问题的方法是提供正确的启动 screen/image.
Apple 的人机界面指南(启动屏幕):https://developer.apple.com/design/human-interface-guidelines/ios/icons-and-images/launch-screen/
我想创建一个没有任何故事板的项目。
我已经删除了 Main 和 LaunchScreen 故事板。
像往常一样,我添加到我的 applicationDidFinishLaunchingWithOptions:
window = UIWindow(frame: UIScreen.main.bounds
window?.rootViewController = ViewController()
window?.makeKeyAndVisible()
现在在项目设置 -> 常规中,如果我将启动屏幕文件留空 UIScreen.main.bounds
是
(CGRect) $R12 = (origin = (x = 0, y = 0), size = (width = 320, height = 480))
我得到以下屏幕:
现在,如果我在 Launch Screen File
字段中添加一些内容,在 Info.plist -> Information 属性 List a new line with key Launch screen interface file base name
出现并且边界是正确的.即使值为空,边界也是正确的。
为什么 Launch screen interface file base name
的存在会影响 UIScreen 边界?
它开始于 iOS 8.0,当时 iPhone 6/6plus 发布(TheFuquan 用户评论它开始于 iPhone 5 版本),2014 年。如果你想回到那个时候要支持此类新设备,您肯定需要添加适当的启动屏幕。通过为您支持的每个设备使用不同尺寸的静态图像,或者通过 xib/storyboards.
现在,您已经解决了您的困惑。解决这个问题的方法是提供正确的启动 screen/image.
Apple 的人机界面指南(启动屏幕):https://developer.apple.com/design/human-interface-guidelines/ios/icons-and-images/launch-screen/