首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >催化剂. Mac催化剂应用程序的最小窗口尺寸

催化剂. Mac催化剂应用程序的最小窗口尺寸
EN

Stack Overflow用户
提问于 2019-07-20 09:49:15
回答 8查看 7.4K关注 0票数 31

Mac催化剂允许调整窗口的大小,是否有方法为Mac催化剂应用程序提供最小的窗口大小?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2019-09-24 19:58:15

只需将以下代码块添加到application:didFinishLaunchingWithOptions方法(用于UIKit项目)或scene(_:willConnectTo:options:) (用于SwiftUI项目):

代码语言:javascript
运行
复制
UIApplication.shared.connectedScenes.compactMap { $0 as? UIWindowScene }.forEach { windowScene in
    windowScene.sizeRestrictions?.minimumSize = CGSize(width: 480, height: 640)
}

PS:您还可以在那里设置maximumSize属性

PS2:如果您将minimumSizemaximumSize设置为相同的值,则窗口大小将保持不变,并且不会调整大小。

票数 25
EN

Stack Overflow用户

发布于 2019-10-15 03:33:33

以下是@marcelosalloum优秀答案的扩展版本。

步骤1. Open AppDelegate.swift

步骤2.定位func应用程序(),在这里插入@marcelosalloum代码的版本(或者像我一样调用您为此创建的函数)。

步骤3.可选地断言您的代码仅在具有合适的Swift的平台上运行(可用#可用)

示例代码(在AppDelegate.swift中)

代码语言:javascript
运行
复制
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    addWindowSizeHandlerForMacOS()

    return true
}

func addWindowSizeHandlerForMacOS() {
    if #available(iOS 13.0, *) {
        UIApplication.shared.connectedScenes.compactMap { $0 as? UIWindowScene }.forEach { windowScene in
            windowScene.sizeRestrictions?.minimumSize = CGSize(width: 800, height: 1100)
            windowScene.sizeRestrictions?.maximumSize = CGSize(width: 800, height: 1100)
        }
    }
}

示例截图

在我的应用程序中,我从第23行开始定义了一个名为addWindowSizeHandlerForMacOS()的函数。然后我从AppDelegate.swift中的application()调用它(第18行)。

票数 15
EN

Stack Overflow用户

发布于 2020-06-04 18:31:13

在您的场景委托中,您可以执行以下操作:

代码语言:javascript
运行
复制
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
    // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
    // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
    guard let scene = (scene as? UIWindowScene) else { return }

    #if targetEnvironment(macCatalyst)
        scene.sizeRestrictions?.minimumSize = CGSize(width: 800, height: 1100)
        scene.sizeRestrictions?.maximumSize = CGSize(width: 1280, height: 1200)
    #endif
}
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57123554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档