1

我有一个高度受限的窗口:它不能超过某个高度(基于其当前内容),但可以变小(在这种情况下,我将添加一个垂直滚动条)。

我用 NSLayoutConstraint 限制最大高度。

现在,如果用户通过检查菜单命令View->启用选项卡式窗口Show Tab Bar,则窗口的内容将向下移动以便为选项卡栏腾出空间,但整个窗口的高度保持不变,这实际上导致内容被“压扁” ,因此我当前的代码决定添加垂直滚动条,就好像用户只是手动降低了窗口高度一样。

我宁愿让窗口与栏选项卡一起增长。我怎样才能做到这一点?

启用标签栏时似乎没有任何事件或通知会通知我。

那么检测标签栏激活的干净方法是什么,以便我可以随之增加窗口高度?

4

1 回答 1

0

我用 KVO 戳了一下,发现我可以为此目的查看NSWindow's属性(在 10.13.6 上测试)。tabbedWindows

在 ViewController 中viewWillAppear

if ([self.view.window respondsToSelector:@selector(tabbedWindows)]) {
    [self.view.window addObserver:self forKeyPath:@"tabbedWindows" options:0 context:nil];
}

然后处理更改:

-(void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(id)change context:(void*)context {
    // ... adjust my window's height
}

但是,这可能不可靠,即我没有找到任何文档可以保证这将在未来起作用,而不仅仅是意外的副作用。

于 2019-04-20T16:56:06.437 回答