我们正在将基于 Swift 的 iOS 应用程序转换为与 Mac兼容的应用程序,使用 Xcode 11 中的Catalyst
。当用户调整应用窗口大小时,我们在 UI 中遇到了问题。那么我们可以禁用调整大小模式并为应用程序窗口提供修复框架吗?
Beta 5 为 UIWindowScene 添加了sizeRestrictions
属性。
如果将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中可用。此代码将在较旧的测试版中崩溃。
您可以在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)
}
for Objective-C try
#if TARGET_OS_MACCATALYST
for (UIScene* scene in UIApplication.sharedApplication.connectedScenes) {
if ([scene isKindOfClass:[UIWindowScene class]]) {
UIWindowScene* windowScene = (UIWindowScene*) scene;
windowScene.sizeRestrictions.minimumSize = CGSizeMake(480, 640);
}
}
#endif