主屏幕尺寸总是 320x480?
Main screen size is always 320x480?
我注意到一些奇怪的事情:如果我从 iOS 应用程序项目中删除所有启动 images/storyboards,然后 UIScreen.main.bounds
缩小到 320x480,无论实际屏幕尺寸如何。
我的问题是:我需要启动 image/storyboard 来确保主屏幕的尺寸正确吗?
这是一个代码示例:
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let screenBounds = UIScreen.main.bounds
print(String(describing: screenBounds)) // Prints "(0.0, 0.0, 320.0, 480.0)"
window = UIWindow(frame:screenBounds)
window!.rootViewController = MyViewController()
window!.makeKeyAndVisible()
return true
}
}
这是我的模拟器屏幕(iPhone 8 plus,iOS 11.2):
如果您没有任何启动图像,也没有启动笔尖或故事板,则表示您声明不支持除 320x480 之外的任何屏幕尺寸(iPhone/iPod )。这一直是正确的,但较旧的 Xcode 项目会自动生成一个 png 以支持 4" 屏幕。如果您使用 iPhone 6 或 iPhone 6 Plus,这可能是不可见的,因为如果您有支持 4" 屏幕的默认图像,这些设备会缩放您的应用程序而不是用字母装箱。
我假设字母装箱是为了确保您的 UI 不会被 iPhone X 的顶级设置破坏,并成为新的默认行为而不是缩放。
将启动图像或故事板添加到您支持的屏幕尺寸的项目应该可以解决此问题
我注意到一些奇怪的事情:如果我从 iOS 应用程序项目中删除所有启动 images/storyboards,然后 UIScreen.main.bounds
缩小到 320x480,无论实际屏幕尺寸如何。
我的问题是:我需要启动 image/storyboard 来确保主屏幕的尺寸正确吗?
这是一个代码示例:
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let screenBounds = UIScreen.main.bounds
print(String(describing: screenBounds)) // Prints "(0.0, 0.0, 320.0, 480.0)"
window = UIWindow(frame:screenBounds)
window!.rootViewController = MyViewController()
window!.makeKeyAndVisible()
return true
}
}
这是我的模拟器屏幕(iPhone 8 plus,iOS 11.2):
如果您没有任何启动图像,也没有启动笔尖或故事板,则表示您声明不支持除 320x480 之外的任何屏幕尺寸(iPhone/iPod )。这一直是正确的,但较旧的 Xcode 项目会自动生成一个 png 以支持 4" 屏幕。如果您使用 iPhone 6 或 iPhone 6 Plus,这可能是不可见的,因为如果您有支持 4" 屏幕的默认图像,这些设备会缩放您的应用程序而不是用字母装箱。
我假设字母装箱是为了确保您的 UI 不会被 iPhone X 的顶级设置破坏,并成为新的默认行为而不是缩放。
将启动图像或故事板添加到您支持的屏幕尺寸的项目应该可以解决此问题