Xcode 11 - 在催化剂中禁用调整大小模式 swift

Xcode 11 - Disable resize mode in catalyst swift

我们正在 使用 Catalyst 将基于 Swift 的 iOS 应用程序转换为 Mac 兼容在 Xcode 11.

当用户 resize app window 时,我们在 UI 中遇到问题。那么我们可以 禁用调整大小模式 并为应用 window 提供修复框架吗?

Beta 5 添加了 sizeRestrictions 属性 到 UIWindowScene

如果将 sizeRestrictions.maximumSizesizeRestrictions.minimumSize 设置为相同的值,则 window 将无法调整大小:

windowScene.sizeRestrictions?.minimumSize = CGSize(width: 640, height: 480)
windowScene.sizeRestrictions?.maximumSize = CGSize(width: 640, height: 480)

添加此代码最简单的地方可能是 scene(_:willConnectTo:options:) 在您的场景委托中。传入的scene对象是一个UIWindowScene,所以直接cast一下然后设置sizeRestrictions.

注意:sizeRestrictions 仅在 iOS 10.15 Beta 5 中可用。此代码将在较旧的 Beta 中崩溃。

您可以在 application:didFinishLaunchingWithOptions 方法中调用它:

    UIApplication.shared.connectedScenes.compactMap { [=10=] as? UIWindowScene }.forEach { windowScene in
        windowScene.sizeRestrictions?.minimumSize = CGSize(width: 480, height: 640)
        windowScene.sizeRestrictions?.maximumSize = CGSize(width: 480, height: 640)
    }