Dou*_*ugC 7 macos layout nsview osx-lion
我有三个子视图的超级视图.其中两个子视图在superview中的大小和位置都是固定的,但第三个子视图的大小可能因内容而异.
我已经设置了自动布局约束来设置每个子视图的大小和位置,但我想要发生的是当第三个视图的内容发生变化时,superview应该调整大小以便能够完全显示它.
我已经在该子视图上实现了 - (NSSize)intrinsicContentSize,以便它返回它想要的大小,但我无法弄清楚如何添加一个约束来触发superview调整大小.
有任何想法吗?
更新:
我通过向视图添加约束来实现这一点,如下所示:
sizeWidthConstraint = [[NSLayoutConstraint constraintsWithVisualFormat:@"H:[self(==viewWidth)]" options:0 metrics:metrics views:views] lastObject];
sizeHeightConstraint = [[NSLayoutConstraint constraintsWithVisualFormat:@"V:[self(==viewHeight)]" options:0 metrics:metrics views:views] lastObject];
Run Code Online (Sandbox Code Playgroud)
其中"viewWidth"和"viewHeight"是具有所需值的度量字典中的键.在udpateConstraints中,我可以分析我的视图的内容并执行此操作:
[sizeHeightConstraint setConstant: size.height];
[sizeWidthConstraint setConstant: size.width];
Run Code Online (Sandbox Code Playgroud)
设置新值,下一个布局将导致视图的大小调整.
更新panupan的问题更新:
以这种方式创建约束时,可以放入本质上是变量名称的内容.在这种情况下,这些名称是viewWidth和viewHeight.它们被称为约束的常数.您还将称为度量的字典传递给[NSLayoutConstrating constraintsWithVisualFormat:...]调用,该调用为这些常量提供值.
因此,在这种情况下,我从视图的默认高度和宽度开始,作为度量字典键的值viewWidth和viewHeight.稍后,我使用setConstant:方法更改这些值.在上面的示例中,size是我根据视图内容计算的CGSize结构(即基于其子视图的大小),我使用width和height值来调整常量.
这并没有达到我的目的,因为它不会导致我的视图大小根据子视图的内在大小自动重新调整大小,但它确实让我有办法手动重新调整大小.
归档时间: |
|
查看次数: |
4763 次 |
最近记录: |