如何为 Mac Catalyst 应用程序设置默认/首选窗口大小?

我有一个启用了 Catalyst 的 iOS 应用。应用程序中的一项功能会打开一个新窗口。默认情况下,此窗口打开非常大,但我需要一种方法使其默认变小。我知道您可以设置 windowScene.sizeRestrictions?.minimumSize.maximumSize,但这会将窗口限制为我喜欢的大小。我想让窗口打开特定大小,默认情况下说 500x800,但可以由用户扩展到他们想要的任何大小。

我在 window?.frame = CGRect(origin: .zero,size: CGSize(width: 500,height: 800)) 中尝试过 SceneDelegate,但没有效果。

视觉示例:

如何为 Mac Catalyst 应用程序设置默认/首选窗口大小?

shanlinghai 回答:如何为 Mac Catalyst 应用程序设置默认/首选窗口大小?

想通了,所以我会在未来帮助任何人解决这个问题。将您的 .maximumSize 设置为您的首选尺寸。然后设置窗口后,再次使用DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {设置.maximumSize,但是这次你要的是实际的最大窗口大小。

我的完整代码:

func scene(_ scene: UIScene,willConnectTo session: UISceneSession,options connectionOptions: UIScene.ConnectionOptions) {
        guard let windowScene = (scene as? UIWindowScene) else { return }
        
        #if targetEnvironment(macCatalyst)
        let toolbarDelegate = NewSchoolworkToolbar()
        let toolbar = NSToolbar(identifier: "main")
        windowScene.title = "New Schoolwork"
        if let titlebar = windowScene.titlebar {
            titlebar.toolbar = toolbar
            titlebar.toolbarStyle = .unified
            titlebar.separatorStyle = .shadow
        }
        #endif
        
        if let windowScene = scene as? UIWindowScene {
            let window = UIWindow(windowScene: windowScene)
            let newClassworkView = NewClassworkTableViewController()
            
            
            windowScene.sizeRestrictions?.minimumSize = CGSize(width: 400,height: 500)
            // This will be your "preferred size"
            windowScene.sizeRestrictions?.maximumSize = CGSize(width: 500,height: 800)
            
            window.rootViewController = newClassworkView
            self.window = window
            window.makeKeyAndVisible()
        }
        DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
            // This will be your actual size.
            windowScene.sizeRestrictions?.maximumSize = CGSize(width: 9000,height: 9000)
        }
    }
本文链接:https://www.f2er.com/336.html

大家都在问