【发布时间】:2021-02-26 19:19:00
【问题描述】:
我使用 Mac Catalyst 将游戏移植到 macOS。游戏内容不会动态调整大小,因此我在应用程序开始时强制使用固定的 3:4 纵横比(如 iPad 纵向)。我将此添加到我的 AppDelegate 类中:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
#if targetEnvironment(macCatalyst)
/* some margin */
let titleHeight: CGFloat = 34 * 4
UIApplication.shared.connectedScenes.compactMap { $0 as? UIWindowScene }.forEach { windowScene in
windowScene.titlebar?.titleVisibility = .hidden
/* screen was always 1920x1080 in macOS Catalina */
let height = windowScene.screen.nativeBounds.height - titleHeight
let width = 3 * height / 4
windowScene.sizeRestrictions?.minimumSize = CGSize(width: width, height: height)
windowScene.sizeRestrictions?.maximumSize = CGSize(width: width, height: height)
}
#endif
}
这可以解决问题,但在 15 英寸 MacBook Pro 中,窗口看起来很小。 Apple 确认 Catalina 总是报告1920x1080、read here。
在已修复的 macOS 11 中,现在在 15 英寸 MacBook Pro 中,对于默认的 Retina 显示设置,我得到:
nativeBounds: 3360x2100
bounds: 1680x1050
nativeScale: 2
scale: 2
但是,如果我将 sizeRestrictions 中的高度固定为 1050,则窗口太短。如果我将它设置为 2100,则窗口大约比屏幕高 30% 并且超出范围。
我在UI Guidelines 中读到,Mac Catalyst 应用程序缩小了 77%,因此大约 1400 的高度似乎在这里工作。有没有办法以编程方式获得这种规模?
目前,我在代码中硬编码了1.3 * screen.bounds.height。不过,我不是 100% 正确的 sizeRestrictions 值,或者它恰好在这个屏幕上。
【问题讨论】:
标签: mac-catalyst macos-big-sur