我有一个完全使用自动布局以编程方式布局的视图。我在视图中间有一个 UITextView,上面和下面都有项目。一切正常,但我希望能够在添加文本时扩展 UITextView。随着它的扩展,这应该会将其下方的所有内容向下推。
我知道如何以“弹簧和支柱”的方式做到这一点,但是有没有这样做的自动布局方式?我能想到的唯一方法是在每次需要增长时删除并重新添加约束。
setBounds包含 UITextView 的视图将由 AutoLayout分配其大小。所以,这就是我所做的。超级视图最初设置了所有其他应有的约束,最后我为 UITextView 的高度设置了一个特殊约束,并将其保存在实例变量中。
setBounds
_descriptionHeightConstraint = [NSLayoutConstraint constraintWithItem:_descriptionTextView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:0.f constant:100]; [self addConstraint:_descriptionHeightConstraint];
在该setBounds方法中,我随后更改了常量的值。
-(void) setBounds:(CGRect)bounds { [super setBounds:bounds]; _descriptionTextView.frame = bounds; CGSize descriptionSize = _descriptionTextView.contentSize; [_descriptionHeightConstraint setConstant:descriptionSize.height]; [self layoutIfNeeded]; }