Xcode 11 - Disable resize mode in catalyst swift

2.3k Views Asked by At

We are converting our Swift based iOS app to Mac compatible using Catalyst in Xcode 11.

We are facing an issue in UI when user resize app window. So can we disable resize mode and give fix frame for app window?

3

There are 3 best solutions below

6
Adam On BEST ANSWER

Beta 5 added a sizeRestrictions property to UIWindowScene.

If you set sizeRestrictions.maximumSize and sizeRestrictions.minimumSize to the same value, the window will not be resizable:

windowScene.sizeRestrictions?.minimumSize = CGSize(width: 640, height: 480)
windowScene.sizeRestrictions?.maximumSize = CGSize(width: 640, height: 480)

The easiest place to add this code is probably scene(_:willConnectTo:options:) in your scene delegate. The scene object passed in is a UIWindowScene, so just cast it and then set sizeRestrictions.

Note: sizeRestrictions are only available in iOS 10.15 Beta 5. This code will crash in older betas.

4
marcelosalloum On

You can call this in your application:didFinishLaunchingWithOptions method:

    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)
    }
0
Adrenalinevictim On

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