我可以在 Mac Catalyst iOS 应用程序上禁用窗口大小调整功能吗

mar*_*oum 4 macos ios uikitformac mac-catalyst

我正在迁移我的 iOS 应用程序以支持 MacCatalyst,但我想防止用户调整窗口大小。

你有什么建议吗?

mar*_*oum 9

从 Xcode11 Beta 5UIWindowScene开始,该类开始支持属性sizeRestrictions.

如果将sizeRestrictions.maximumSize和设置sizeRestrictions.minimumSize为相同的值,则窗口将无法调整大小。为此,只需在您的application:didFinishLaunchingWithOptions方法中调用它(如果您使用UIKit):

    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)
    }
Run Code Online (Sandbox Code Playgroud)

如果您使用的是SwiftUI而不是 UIKit,您实际上应该将它添加到scene(_:willConnectTo:options:)您的场景委托中。

注意:您需要在 OSX 10.15 Beta 5 或更高版本中运行此程序,否则会崩溃

  • 仅当我将其放在 ```func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { }``` 中时,这才对我有用 (3认同)