我有一个限高的窗口:它不能增长到某个高度以上(基于其当前内容),但是可以变小(在这种情况下,我将添加一个垂直滚动条)。
我使用NSLayoutConstraint限制最大高度。
现在,如果用户通过检查菜单命令View
-> Show Tab Bar
启用选项卡式窗口,则窗口的内容将下移,以便为选项卡栏腾出空间,但整个窗口的高度仍保持不变相同,这实际上导致内容被“压缩”,因此我当前的代码决定添加垂直滚动条,就像用户只是手动减小窗口高度一样。
我宁愿窗口随栏标签一起增长。我该怎么做?
似乎没有事件或通知会在启用标签栏时通知我。
那么有什么干净的方法可以检测到选项卡栏的激活,以便我可以同时增加窗口高度?
答案 0 :(得分:0)
我与KVO闲逛,发现可以为此目的观察NSWindow
的{{1}}属性(在10.13.6上进行了测试)。
在ViewController的tabbedWindows
中:
viewWillAppear
然后处理更改:
if ([self.view.window respondsToSelector:@selector(tabbedWindows)]) {
[self.view.window addObserver:self forKeyPath:@"tabbedWindows" options:0 context:nil];
}
但是,这可能并不可靠,也就是说,我找不到任何文档来保证这种方法将来会奏效,而不仅仅是偶然的副作用。