Xcode 11 - отключить режим изменения размера в катализаторе swift

Мы конвертируем наше iOS-приложение в Mac- совместимое с использованием катализатора Swift в XCode 11.

Мы сталкиваемся с проблемой в пользовательском интерфейсе, когда пользователь изменяет размер окна приложения, поэтому можем ли мы отключить режим изменения размера и задать фиксированный кадр для окна приложения?

3 ответа

Beta 5 добавила sizeRestrictionsсвойство UIWindowScene.

Если вы установите 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)
    }

для цели-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
Другие вопросы по тегам