我们正在使用Xcode 11中的Catalyst将我们基于 Swift 的 iOS 应用程序转换为与 Mac兼容的应用程序。
当用户调整应用程序窗口大小时,我们在 UI 中遇到问题。那么我们可以禁用调整大小模式并为应用程序窗口提供固定框架吗?
我们正在使用Xcode 11中的Catalyst将我们基于 Swift 的 iOS 应用程序转换为与 Mac兼容的应用程序。
当用户调整应用程序窗口大小时,我们在 UI 中遇到问题。那么我们可以禁用调整大小模式并为应用程序窗口提供固定框架吗?
Beta 5向UIWindowScenesizeRestrictions
添加了一个属性。
如果将sizeRestrictions.maximumSize
和设置sizeRestrictions.minimumSize
为相同的值,则窗口将无法调整大小:
windowScene.sizeRestrictions?.minimumSize = CGSize(width: 640, height: 480)
windowScene.sizeRestrictions?.maximumSize = CGSize(width: 640, height: 480)
添加此代码的最简单位置可能是scene(_:willConnectTo:options:)
在您的场景委托中。scene
传入的对象是 a UIWindowScene
,所以只需转换它然后设置sizeRestrictions
。
注意:sizeRestrictions
仅在 iOS 10.15 Beta 5 中可用。此代码将在较旧的 Beta 中崩溃。
您可以在您的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)
}