很难用语言表达这个问题,但是一个真实的例子会有帮助。如果您查看iTunes应用程序,它似乎有一个用于Sidebar | Content拆分的NSSplitView,以及一个用于源列表和艺术品面板的嵌套NSSplitView。

======>

当拖动分隔器使侧边栏变薄时,艺术品视图(内部NSSplitView的下半部)会缩短,以保持正确的纵横比。这就是我想要的行为。
我已经将外部NSSplitView的delegate连接起来指向sideBarController,这样我就可以通过编程获得调整大小的更改,并调整拆分视图的下半部分。使这一半的问题正常工作,即当我更改侧边栏、宽度时,侧边栏面板相应地调整它们的大小。
我在攻击中遇到的问题是,当嵌套的NSSplitView的高度被改变时,如何调整边栏的宽度。我最初试图找到使这个内部splitview的分隔符不可拖的方法,但却找不到任何方法。我现在设置它的方式是将内部滚动视图的委托设置为拥有主splitview的windowController,然后对高度进行计算以改变信息面板的宽度。
当然,改变splitview的大小会导致其他splitview改变它的大小,这再次改变了原始的大小,并创建了一个无穷无尽的循环。我可以添加标志和计时器来尝试解决这个问题,但似乎我已经在这里再次尝试实现这个功能了。
如何正确地将嵌套的splitview面板限制到其父级宽度,或者更一般地说,--复制iTunes "Selected / Now Playing“视图的调整大小行为的最佳方法是什么?
发布于 2011-01-27 02:58:06
您可以尝试查看我的CHLayoutManager,这将允许您执行以下操作:
[mySplitView setLayoutName:@"splitview"];
CHLayoutConstraint *constraint = [CHLayoutConstraint constraintWithAttribute: CHLayoutConstraintAttributeHeight relativeTo:@"splitview" attribute: CHLayoutConstraintAttributeWidth];
[mySplitView addConstraint:constraint];现在,每当您的mySplitView调整大小时,它将自动更新视图的高度以匹配宽度。
您可能需要为您的情况做一些更复杂的事情,但这是一般的想法。
https://stackoverflow.com/questions/4812199
复制相似问题