在UI中,我有一些视图,哪些内容是可伸缩的,但应该保留一些宽高比。此宽高比在运行时更改,并且在描述宽高比的某些属性更改时应更新视图布局。
我已曝光NSLayoutConstraint
,但其用于宽高比的属性:multiplier
是只读的。什么是更有趣的类似属性constant
可以更改。
intrisicContentSize
和sizeThatFits:
,但我不确定这应该如何用于NSLayoutConstraint
答案 0 :(得分:12)
好的,我抱怨很多。删除和重新创建约束不是一个大问题(感谢@vacawama):
- (void)updateASpectRatio: (float)aspectRatio {
// self.aspectRatioConstraint - has to be a strong reference
[self.aspectRatioView removeConstraint: self.aspectRatioConstraint];
self.aspectRatioConstraint = [NSLayoutConstraint constraintWithItem: self.aspectRatioConstraint.firstItem
attribute: self.aspectRatioConstraint.firstAttribute
relatedBy: self.aspectRatioConstraint.relation
toItem: self.aspectRatioConstraint.secondItem
attribute: self.aspectRatioConstraint.secondAttribute
multiplier: self.aspectRatioView.aspectRatio
constant: 0.0];
[self.aspectRatioView addConstraint: self.aspectRatioConstraint];
}