首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSSplitView子视图大小以编程方式受限于容器NSSplitView的大小

NSSplitView子视图大小以编程方式受限于容器NSSplitView的大小
EN

Stack Overflow用户
提问于 2011-01-27 02:44:58
回答 1查看 2.2K关注 0票数 2

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

======>

当拖动分隔器使侧边栏变薄时,艺术品视图(内部NSSplitView的下半部)会缩短,以保持正确的纵横比。这就是我想要的行为。

我已经将外部NSSplitViewdelegate连接起来指向sideBarController,这样我就可以通过编程获得调整大小的更改,并调整拆分视图的下半部分。使这一半的问题正常工作,即当我更改侧边栏、宽度时,侧边栏面板相应地调整它们的大小。

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

当然,改变splitview的大小会导致其他splitview改变它的大小,这再次改变了原始的大小,并创建了一个无穷无尽的循环。我可以添加标志和计时器来尝试解决这个问题,但似乎我已经在这里再次尝试实现这个功能了。

如何正确地将嵌套的splitview面板限制到其父级宽度,或者更一般地说,--复制iTunes "Selected / Now Playing“视图的调整大小行为的最佳方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-27 02:58:06

您可以尝试查看我的CHLayoutManager,这将允许您执行以下操作:

代码语言:javascript
复制
[mySplitView setLayoutName:@"splitview"];
CHLayoutConstraint *constraint = [CHLayoutConstraint constraintWithAttribute: CHLayoutConstraintAttributeHeight relativeTo:@"splitview" attribute: CHLayoutConstraintAttributeWidth];
[mySplitView addConstraint:constraint];

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4812199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档