小编典典

使用自动布局扩展为文本的 UITextView

all

我有一个完全使用自动布局以编程方式布局的视图。我在视图中间有一个 UITextView,上面和下面都有项目。一切正常,但我希望能够在添加文本时扩展
UITextView。随着它的扩展,这应该会将其下方的所有内容向下推。

我知道如何以“弹簧和支柱”的方式做到这一点,但是有没有这样做的自动布局方式?我能想到的唯一方法是在每次需要增长时删除并重新添加约束。


阅读 60

收藏
2022-08-07

共1个答案

小编典典

setBounds包含 UITextView 的视图将由
AutoLayout分配其大小。所以,这就是我所做的。超级视图最初设置了所有其他应有的约束,最后我为 UITextView
的高度设置了一个特殊约束,并将其保存在实例变量中。

_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];
}
2022-08-07