我在静态UITableViewCell中有一个UITextView,如下所示:
在我的表视图类的viewDidLoad()方法中,我希望能够更改UITextView的文本,让UITextView更改大小以适应文本(我在UITextView上禁用了滚动),然后拥有UITableViewCell仍然受到限制,正如我所预期的那样。这是我尝试这样做的:
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.delegate = self
self.aboutTextView.text = "Some Long String"
//implement self sizing cells
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 400.0
//set the frame of the UITextView to match the size of the text
let fixedWidth = aboutTextView.frame.size.width
let newSize = aboutTextView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
var newFrame = aboutTextView.frame
newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)
aboutTextView.frame = newFrame;
//This is returning the new size correctly
//Reload the tableview, nothing happens, text view remains the same size as in the storyboard
self.tableView.reloadData()
}
虽然新框架大于故事板中的默认大小,但重新加载tableView时没有任何反应。我在UITextView上尝试了setNeedsLayout(),但也没有运气。我还尝试通过IBOutlet来约束UITextView的高度并改变高度的常量,但是由于显而易见的原因,约束会中断。有人知道为什么我的代码不起作用吗?做我想做的更好的方法吗?
答案 0 :(得分:0)
有关行高的所有代码都应放在tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
函数中。这样,每当重新加载表时,代码将再次执行,从而改变表高度。
编辑:我完全误解了你在做什么。在故事板中,尝试向单元格中的UITextView添加约束并为其赋予高度约束,然后确保单元格的高度约束略大于UITextView的高度约束。