如何知道NSView的高度?当我将NSView放置在NSWindow中并打开NSView时,如何设置NSView的高度,使其可以占用窗口中所有可用的高度?
rdlzhqv91#
在macOS 11或更高版本中,如果您启用了设置“全尺寸内容视图”,则可以使用safeAreaInsets来确定工具栏的高度:
safeAreaInsets
guard let contentView = window?.contentView else { return } let toolbarHeight = contentView.safeAreaInsets.top
字符串
i86rm4rw2#
如果您设置/替换窗口的contentView,窗口将自动调整其大小到正确的大小(或者如果视图的大小受到比NSLayoutConstraint.Priority.windowSizeStayPut更高优先级的约束,则调整自身大小)。如果您将视图放在提供的内容视图中,则内容视图的bounds指示将放置视图的矩形。如果你只是想要窗口的内容矩形,你可以用window.contentRect(forFrameRect:window.frame)来得到。
contentView
NSLayoutConstraint.Priority.windowSizeStayPut
bounds
window.contentRect(forFrameRect:window.frame)
eivgtgni3#
根据我的经验,你不需要考虑工具栏的高度;运行时会自动为你做这件事。只要像平常一样添加视图就可以了。从编程上看,它看起来像这样:
let view = CustomView( frame:NSMakeRect(0, 0, _wndW, _wndH) ) window.contentView!.addSubview (view)
5vf7fwbs4#
您可以用途:
let toolbarHeight = window.frame.height - (window.contentView?.bounds.height ?? .zero)
4条答案
按热度按时间rdlzhqv91#
在macOS 11或更高版本中,如果您启用了设置“全尺寸内容视图”,则可以使用
safeAreaInsets
来确定工具栏的高度:字符串
i86rm4rw2#
如果您设置/替换窗口的
contentView
,窗口将自动调整其大小到正确的大小(或者如果视图的大小受到比NSLayoutConstraint.Priority.windowSizeStayPut
更高优先级的约束,则调整自身大小)。如果您将视图放在提供的内容视图中,则内容视图的
bounds
指示将放置视图的矩形。如果你只是想要窗口的内容矩形,你可以用
window.contentRect(forFrameRect:window.frame)
来得到。eivgtgni3#
根据我的经验,你不需要考虑工具栏的高度;运行时会自动为你做这件事。只要像平常一样添加视图就可以了。从编程上看,它看起来像这样:
字符串
5vf7fwbs4#
您可以用途:
字符串