当前位置:  开发笔记 > IOS > 正文

OSX应用程序:如何使窗口最大化?

如何解决《OSX应用程序:如何使窗口最大化?》经验,为你挑选了2个好方法。

我正在开发一个mac应用程序,我喜欢使初始窗口处于最大化状态,就像你按下带加号的绿色按钮一样.我不希望它是全屏的.



1> Rob Napier..:

处于缩放状态的应用程序与"最大化"不同.绿色加号图标表示缩放,表示"此内容的适当大小".在某些应用程序中,这是可见的框架(正如Eric D.讨论的那样),但它几乎可以是任何东西.例如,尝试缩放Safari窗口.

假设你真的想要"最大化"而不是"缩放",那么Eric在正确的轨道上,但它可以做得更好.首先,你应该使用窗口的屏幕(如果有的话).此外,您不应在启动期间为窗口调整大小设置动画(因为在启动时看起来很尴尬).

func applicationDidFinishLaunching(aNotification: NSNotification) {
    if let screen = window.screen ?? NSScreen.mainScreen() {
        window.setFrame(screen.visibleFrame, display: true)
    }
}

您可能需要考虑使用a NSWindowController来管理它而不是将其放在应用程序委托中.在这种情况下,你可以把它放进去windowDidLoad.窗口控制器是AppKit中非常常见的工具(与视图控制器相反,它在历史上并不常见).

如果您确实想要缩放行为,请熟悉该NSWindowDelegate方法windowWillUseStandardFrame(_:defaultFrame:).您通常不应该zoom(_:)直接调用启动,因为它会设置动画,但是您在委托中执行的任何逻辑都应该用于计算帧.再次,确保调整框架以在窗口的屏幕上显示,如果它有一个,而不是主屏幕.

理想情况下,您应该尊重用户使用的最后一帧而不是强制它到可见帧.frameAutosave如果你想研究更多,可以在Cocoa中调用它.如果您只是在Interface Builder中设置自动保存名称,窗口控制器将帮助您稍微自动管理.(虽然由于需要在首次启动时计算帧以获得可见帧,但稍微复杂一点,因此它不会完全自动化.)

在任何情况下使默认框架成为可见框架之前,请仔细考虑.这在大型显示器上可能真的很大(那里仍然有很多30英寸的Cinema显示器,但即使在27英寸显示器上也可能非常强大).有时这很好,取决于你的应用程序,但我经常发现值得定义一个最大的初始大小(同时允许用户使其更大).



2> ayaio..:

您可以使用NSScreen visibleFrame作为目标框架将窗口"缩放"到最大可用空间.让我们说window你的NSWindow IBOutlet:

if let screen = NSScreen.mainScreen() {
    window.setFrame(screen.visibleFrame, display: true, animate: true)
}

例如,在AppDelegate.swift中:

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    @IBOutlet weak var window: NSWindow!

    func applicationDidFinishLaunching(aNotification: NSNotification) {
        if let screen = NSScreen.mainScreen() {
            window.setFrame(screen.visibleFrame, display: true, animate: true)
        }
    }


Swift 3的更新:只需将`.mainScreen()`替换为`.main()`。
推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有