2

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

在此处输入图像描述 ======> 在此处输入图像描述

当您拖动分隔线以使侧边栏变细时,艺术品视图(内部的下半部分NSSplitView)会缩短以保持正确的纵横比。这是我所追求的行为。

我已经连接了外部NSSplitView'sdelegate以指向 sideBarController,这样我就可以得到大小更改并以编程方式调整拆分视图的下部。我有这一半的问题正常工作,也就是说,当我更改侧边栏、宽度时,侧边栏面板会相应地调整它们的大小。

我在攻击中遇到的问题是当嵌套NSSplitView的高度改变时如何调整侧边栏的宽度。我最初试图找到使这个内部拆分视图的分隔线不可拖动的方法,但找不到任何方法来做到这一点。我现在设置的方法是将内部滚动视图的委托设置为拥有主拆分视图的 windowController,然后计算高度以更改信息面板的宽度。

当然,改变一个大小会导致另一个拆分视图改变它的大小,这会再次改变原始大小并创建一个无限循环。我可以添加标志和计时器来尝试解决这个问题,但似乎我要在这里再次实现这个功能。

如何正确地将嵌套的 splitview 面板限制为其父宽度或更一般地,复制 iTunes“选定项目/正在播放”视图的调整大小行为的最佳方法是什么?

4

1 回答 1

3

您可以尝试查看我的CHLayoutManager,它可以让您执行以下操作:

[mySplitView setLayoutName:@"splitview"];
CHLayoutConstraint *constraint = [CHLayoutConstraint constraintWithAttribute: CHLayoutConstraintAttributeHeight relativeTo:@"splitview" attribute: CHLayoutConstraintAttributeWidth];
[mySplitView addConstraint:constraint];

现在,每当您mySplitView调整大小时,它都会自动更新视图的高度以匹配宽度。

您可能需要针对您的情况做一些更复杂的事情,但这是一般的想法。

于 2011-01-27T02:58:06.540 回答