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