Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何获得NSToolbar高度?_Swift_Macos_Nstoolbar - Fatal编程技术网

Swift 如何获得NSToolbar高度?

Swift 如何获得NSToolbar高度?,swift,macos,nstoolbar,Swift,Macos,Nstoolbar,我如何知道NSToolbar的高度?当我将NSView放置在打开NSToolbar的NSWindow中时,如何设置NSView的高度,使其可以占据窗口中的所有可用高度?根据我的经验,您不需要考虑工具栏高度;运行时会自动为您执行此操作。只需像平常一样添加视图。从编程角度看,它如下所示: let view = CustomView( frame:NSMakeRect(0, 0, _wndW, _wndH) ) window.contentView!.addSubview (view)

我如何知道NSToolbar的高度?当我将NSView放置在打开NSToolbar的NSWindow中时,如何设置NSView的高度,使其可以占据窗口中的所有可用高度?

根据我的经验,您不需要考虑工具栏高度;运行时会自动为您执行此操作。只需像平常一样添加视图。从编程角度看,它如下所示:

let view = CustomView( frame:NSMakeRect(0, 0, _wndW, _wndH) )       
 window.contentView!.addSubview (view)


如果设置/替换窗口的
contentView
,则该窗口将自动且必要地将其调整为正确的大小(或者,如果视图的大小受到比
NSLayoutConstraint.priority.WindowsIzeStatyPut更高的优先级约束,则调整其自身大小)

如果要将视图放在提供的内容视图中,则内容视图的
边界
指示将放置视图的矩形


如果您只需要窗口的内容矩形,可以使用macOS 11或更高版本中的
window.contentRect(forFrameRect:window.frame)
,在启用“全尺寸内容视图”设置的情况下,可以使用
safeAreaInsets
来确定工具栏的高度:

guard let contentView = window?.contentView else {
    return
}

let toolbarHeight = contentView.safeAreaInsets.top

谢谢我使用window.setFrame()来更改窗口大小,而我应该使用window.setContentSize()。