UIStackView里面的UITextview

我在UIStackView中添加了我的UITextView。

但是我的textview不是Multiline。

自动布局如下所示:

在这里输入图像说明

按照图像它只是采取1行。 textview框架显示为按照图像的框架。

的UITextView

在这里输入图像说明 在这里输入图像说明

UIStackView

在这里输入图像说明

问题是你已经通过给定顶部底部约束来修正UIStackviewheight

  1. 删除底部约束

    在这里输入图像说明

禁用textview滚动。

让你的textview委托自己并实现textViewDidChange

迅速

 func textViewDidChange(textView: UITextView) { self.view.layoutIfNeeded() } 

目标C:

 -(void)textViewDidChange:(UITextView *)textView { [self.view layoutIfNeeded]; } 

确保这个方法被调用。

现在你的stackview应该随着你的textview增加到多行。

那么你的textview不是多行的原因是你已经固定了高度。 所以它永远不会是多行的。

见GIF:

在这里输入图像说明

到目前为止,我发现的最佳解决scheme是将UITextView包装在UIView中,然后用高度锚定器设置UITextView的固定高度。

 let textView = UITextView() let containerView = UIView() textView.translatesAutoresizingMaskIntoConstraints = false containerView.addSubview(textView) textView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor).isActive = true textView.topAnchor.constraint(equalTo: containerView.topAnchor).isActive = true textView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor).isActive = true textView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor).isActive = true textView.heightAnchor.constraint(equalToConstant: 100).isActive = true let stackView = UIStackView(arrangedSubviews: [containerView])