NSSplitView子视图大小以编程方式约束到容器NSSplitView的大小

很难将这个问题用语言表达,但现实世界的例子会有所帮助。如果你看iTunes应用程序,
Sidebar | Content
分割似乎有一个
NSSplitView
,而源列表和艺术作品面板有一个嵌套的
NSSplitView
。   ======> 当您拖动分隔线以使侧边栏更薄时,图稿视图(内部
NSSplitView
的下半部分)会缩短以保持正确的宽高比。这是我追求的行为。 我已连接外部
NSSplitView
delegate
指向sideBarController,因此我可以获得大小调整更改并以编程方式调整拆分视图的下半部分。我有一半的问题正常工作,也就是说,当我更改侧边栏宽度时,侧边栏面板会相应地调整它们的尺寸。 我在攻击中遇到问题的问题是当嵌套的
NSSplitView
的高度被改变时如何调整侧边栏的宽度。我最初试图找到方法使这个内部splitview的分隔符不可拖动,但找不到任何方法来做到这一点。我现在设置的方法是将内部scrollview的委托设置为拥有主分割视图的windowController,然后对高度进行计算以更改信息面板的宽度。 当然,改变一个大小会导致另一个splitview改变其大小,这会再次影响原始大小并创建无限循环。我可以添加标志和计时器来尝试解决这个问题,但是看起来我已经在努力实现这一功能了。 如何将嵌套的splitview面板正确约束到其父级宽度,或者更一般地说,复制iTunes“Selected Item / Now Playing”视图的大小调整行为的最佳方法是什么?     
已邀请:
您可以尝试查看我的CHLayoutManager,它可以让您:
[mySplitView setLayoutName:@"splitview"];
CHLayoutConstraint *constraint = [CHLayoutConstraint constraintWithAttribute: CHLayoutConstraintAttributeHeight relativeTo:@"splitview" attribute: CHLayoutConstraintAttributeWidth];
[mySplitView addConstraint:constraint];
现在,只要你的
mySplitView
调整大小,它就会自动更新视图的高度以匹配宽度。 你可能不得不为你的情况做一些复杂的事情,但这是一般的想法。     

要回复问题请先登录注册