Swift /如何使用动态高度的UITextView INSIDE UITableViewCell具有动态高度
我使用以下代码让UITableViewCell具有动态高度:
tableView.estimatedRowHeight = 155 tableView.rowHeight = UITableViewAutomaticDimension
这段代码让UITextView根据内容改变它的高度。
extension NewUserTweetTableVC: UITextViewDelegate { func textViewDidChange(textView: UITextView) { let fixedWidth = textView.frame.size.width textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max)) let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max)) var newFrame = textView.frame newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height) textView.frame = newFrame } }
一旦我在运行时更改了UITextView的文本,UITextView的高度就会改变,但UITableViewCell的高度却没有。 我怎么能改变呢? 非常感谢帮助。
以编程方式获取textview的高度…
let textView = UITextView()//your Text view let sizeThatShouldFitTheContent = textView.sizeThatFits(textView.frame.size) let height = sizeThatShouldFitTheContent.height
试试这个演示……
在UITableView中自定义UITextView
http://candycode.io/self-sizing-uitextview-in-a-uitableview-using-auto-layout-like-reminders-app/
如果您使用的是UITableViewAutomaticDimension
则必须从上到下设置序列约束。 没有autolayout或适当的约束UITableViewAutomaticDimension
将无法正常工作。 所以你可以管理这样的东西: set top,bottom,leading,trailing and fixed height
constraints到textview
。 然后采取fixed height constraint
出口并增加它的constant
而不是改变或设置textview的框架,我认为每个都可以工作!
我正在改善Lion的答案。
如果您使用的是UITableViewAutomaticDimension,则必须从上到下设置序列约束。 没有autolayout或适当的约束UITableViewAutomaticDimension将无法正常工作。 所以你可以管理这样的东西:set top,bottom,leading,trailing和fixed height constraints到textview。 禁用UITextview的滚动function,您就完成了。 您不需要固定高度约束。