怎么使用UITextView实现自动布局扩展为文本?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (34)

我有一个完全使用自动布局编程的视图。我在视图的中间有一个UITextView,它上面和下面的项目。一切工作正常,但我希望能够扩展UITextView作为文本添加。当它扩展时,它应该把它下面的所有东西都推下来。

提问于
用户回答回答于

包含UITextView的视图将setBounds通过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];
}
用户回答回答于

刚开始讨论这个问题,我不知道我是否偏离了主题,但是如果将UITextView设置为“Not”滚动:

[textView setScrollEnabled:NO];

它将能够计算一个内部大小,从而允许自动布局移动其他元素本身,然后由自己来正确设置约束。

扫码关注云+社区