macos - 如何获得 NSWindow 的默认标题栏高度?

标签 macos nswindow window-managers

我创建了一个 OS/X 应用程序,当它运行时,我将窗口放置在屏幕中央。为此,在计算 y 值时必须包含标题栏高度。

有没有办法确定默认标题栏?我希望(根据我使用其他窗口系统的经验)我必须以某种方式查询窗口管理器......

最佳答案

我想出了这个解决方案。注意当窗口的 styleMask 包括 fullSizeContentView ,这将返回 0.0 ,因为在这种情况下,标题栏实际上没有高度。
作为 Swift 扩展:

extension NSWindow {
    var titlebarHeight: CGFloat {
        frame.height - contentRect(forFrameRect: frame).height
    }
}
用法:
let titlebarHeight = someWindow.titlebarHeight
作为 Objective-C 类别扩展:
@implementation NSWindow (TitleBarHeight)

- (CGFloat) titlebarHeight
{
    return self.frame.size.height - [self contentRectForFrameRect: self.frame].size.height;
}

@end
用法:
CGFloat titlebarHeight = someWindow.titlebarHeight;

关于macos - 如何获得 NSWindow 的默认标题栏高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28955483/

相关文章:

macos - Git > dyld : lazy symbol binding failed: Symbol not found: _iconv_open

php - 是否可以在使用 puPHPet 提供的环境中升级 PHP?

cocoa - Mac OS X,使窗口越过菜单栏

objective-c - 在IB中创建的NSWindow不会在应用程序中以模态方式显示

java - WindowManager float 窗口穿过屏幕边框

linux - xkb 是 xlib 标准的一部分吗?

JAVA : Program Works in Terminal , 但不在 Visual Studio Code 中:Mac OS

c++ - 带有 Crypto++ 库的 QT 控制台应用程序

cocoa - 第一次在 Mac OSX 中设计 View /窗口

c++ - XWindow 不听自己的属性/窗口管理器