【问题标题】:Zooming a NSBorderlessWindowMask styled NSWindow缩放 NSBorderlessWindowMask 样式的 NSWindow
【发布时间】:2011-11-10 03:20:00
【问题描述】:

我有一个 NSWindow 样式,使用 NSBorderlessWindowMask 需要调整大小,但我希望它在两个大小之间缩放。根据 Apple 文档,不支持调整大小的窗口在使用 NSWindow 的 -performZoom 方法时会发出哔哔声。

有没有一种方法可以使用内置逻辑使用窗口的最大大小、屏幕绑定限制以及恢复到缩放前的原始窗口位置来实际缩放窗口,无需指定 @987654325 即可使用@?

【问题讨论】:

    标签: objective-c cocoa nswindow resize zooming


    【解决方案1】:

    您无法使用内置逻辑调整无边框窗口的大小,使用窗口的最大尺寸、屏幕限制以及恢复到缩放前的原始窗口位置,无需指定 NSResizableWindowMask 即可使用。

    如果你想切换无边框窗口的大小,你可以使用 setFrame:display: 这样的方法 -

    NSRect window = [window frame];
    
    if (window.size.width == 50) {
    
        [window setFrame:NSMakeRect(50, 50, 500, 500) display:NO];
    }
    else {
        [window setFrame:NSMakeRect(50, 50, 50, 50) display:NO];
    } 
    

    【讨论】:

    • 我想,但值得一试。只有这种方法不考虑屏幕的边界,也不考虑 Cocoa 在确定窗口是否缩放时实现的模糊逻辑。我将继续使用 NSScreen 和其他 API 实现所有上述逻辑。我只是想知道是否有什么我可以覆盖实现以实现假缩放可用。我将首先尝试在 NSResponder 上使用 -tryToPerform 等。
    猜你喜欢
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多