【发布时间】:2019-12-14 17:39:52
【问题描述】:
我们正在使用 Xcode 11 中的 Catalyst将我们基于 Swift 的 iOS 应用程序转换为 Mac 兼容。
当用户 resize 应用窗口时,我们在 UI 中遇到问题。那么我们可以禁用调整大小模式并为应用窗口提供固定框架吗?
【问题讨论】:
-
谁给减号,为什么?
标签: swift xcode11 uikitformac mac-catalyst
我们正在使用 Xcode 11 中的 Catalyst将我们基于 Swift 的 iOS 应用程序转换为 Mac 兼容。
当用户 resize 应用窗口时,我们在 UI 中遇到问题。那么我们可以禁用调整大小模式并为应用窗口提供固定框架吗?
【问题讨论】:
标签: swift xcode11 uikitformac mac-catalyst
您可以在 application:didFinishLaunchingWithOptions 方法中调用它:
UIApplication.shared.connectedScenes.compactMap { $0 as? UIWindowScene }.forEach { windowScene in
windowScene.sizeRestrictions?.minimumSize = CGSize(width: 480, height: 640)
windowScene.sizeRestrictions?.maximumSize = CGSize(width: 480, height: 640)
}
【讨论】:
Beta 5 将 sizeRestrictions 属性添加到 UIWindowScene。
如果您将sizeRestrictions.maximumSize 和sizeRestrictions.minimumSize 设置为相同的值,则窗口将无法调整大小:
windowScene.sizeRestrictions?.minimumSize = CGSize(width: 640, height: 480)
windowScene.sizeRestrictions?.maximumSize = CGSize(width: 640, height: 480)
添加此代码最简单的地方可能是场景委托中的scene(_:willConnectTo:options:)。传入的scene 对象是UIWindowScene,所以只需转换它,然后设置sizeRestrictions。
注意:sizeRestrictions 仅在 iOS 10.15 Beta 5 中可用。此代码将在旧 Beta 版中崩溃。
【讨论】: