簡體   English   中英

Xcode 11 - 在催化劑中禁用調整大小模式 swift

[英]Xcode 11 - Disable resize mode in catalyst swift

我們正在使用 Xcode 11 中的Catalyst將基於 iOS 的應用程序轉換為與 Mac兼容的 Swift。

當用戶調整應用程序 window 的大小時,我們在 UI 中遇到問題。那么我們可以禁用調整大小模式並為應用程序 window 提供修復框架嗎?

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 中可用。此代碼將在較舊的 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)
    }

對於 Objective-C 嘗試

#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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM