gpt4 book ai didi

objective-c - NSCollectionView 使用自动布局自动调整 subview 的大小

转载 作者:太空狗 更新时间:2023-10-30 03:54:02 24 4
gpt4 key购买 nike

我正在尝试实现简单 NSView 的堆叠排列,为此我正在使用绑定(bind)到字典 Controller 的 NSCollectionView。到目前为止我得到的结果如下:

Normal

左侧的标签绑定(bind)到 Controller 项键,SegmentedControl selectedIndex 绑定(bind)到项值。

问题是,我不知道如何强制 NSCollectionView 中的 subview 符合容器宽度;发生的事情是,它们保持自己的宽度,当 NSCollectionView 变得太窄时,水平滚动条出现,如下所示:

enter image description here

我知道 this question (和“反向”,this one),老实说,除了琐碎的事情之外,我从来没有使用过自动布局。我想知道,由于 AutoLayout 带来的所有奇思妙想,有没有一种方法可以在不诉诸编码和使用事件/通知的情况下处理这个问题? (我知道观察 NSViewFrameDidChangeNotification 是一种替代方法,对吧?)

谢谢

最佳答案

只是做了一些非常相似的事情 - 除了使用 NSSplitView 子类 - 所以如果我正确理解你的问题,你会想要为 subview 设置约束以像这样附加到你的 super View 的两侧:

NSDictionary * viewsDict = NSDictionaryOfVariableBindings(filler);
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[filler]|"
options:0
metrics:nil
views:viewsDict]];

您可能还需要调整 subview 的内容压缩阻力优先级参数以达到预期的效果。

另请注意,当专门针对 OS X 10.9 时,会有新的 NSStackView类:

"NSStackView 是 OS X 10.9 中的一个新类。它用于使用自动布局对 View 的水平或垂直堆栈进行布局。在堆栈 View 中添加和删除 View 时,将自动创建和修改必要的约束保持一个有凝聚力的布局。"

关于objective-c - NSCollectionView 使用自动布局自动调整 subview 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20999818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com