UIStackView里面的UITextview
我在UIStackView中添加了我的UITextView。
但是我的textview不是Multiline。
自动布局如下所示:
按照图像它只是采取1行。 textview框架显示为按照图像的框架。
的UITextView
UIStackView
问题是你已经通过给定顶部和底部约束来修正UIStackview的height
。
-
删除底部约束
禁用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])