Xcode 11 - 在 catalyst swift 中禁用大小调整模式



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

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

Beta 5 为 UIWindowScene 添加了sizeRestrictions属性。

如果将sizeRestrictions.maximumSizesizeRestrictions.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

相关内容

  • 没有找到相关文章

最新更新