我有一个静态UItableView,其中一个单元格包含一个文本视图,它希望使文本视图可自动增长,并使单元格同时增长。始终包装文本而不是剪切文本。
在isoalted文本视图中我不会面对这个问题,因为我有固定的大小并显示长文本我只是在textview中滚动,但在这种情况下我不想滚动,因为我的UITextView被设置为nonScrolable因为父(UITableView)已经有滚动,我想避免嵌套滚动。
我对此进行排序的方法是覆盖高度....每次用户输入时使用sizeThatFits(大小:CGSize)重新加载我的视图以了解requerid大小,然后设置UITextView单元格大小,并显示文本正确。
但是细胞只是增长了一点,而且还不够,我研究了sizeThatFits以了解我是否理解它,一种方法可以让一个物体的物体适合另一个物体,或者还有其他需要注意的参数关于填充,边距或收敛,我无法找到解释这些内容的地方。
然后我有这个问题, 我错过了理解这种方法吗?我怎么用它呢? 我是否正确地实现目标?还是有更好的方法呢?
非常感谢你。
override func tableView(tableView: UITableView,
heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
let defaulHeight: CGFloat = 44
if indexPath.row == textFieldRowNumber {
let cellSize = messageTableViewCell.bounds.size
let wantedSize = longMessageTextField.sizeThatFits(cellSize)
return wantedSize.height
} else {
return defaulHeight
}
}
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
textView.resignFirstResponder()
let previousMessageInput = longMessageTextField.text
longMessageTextField.text = previousMessageInput! + text
let indexToReload = NSIndexPath(forItem: 4, inSection: 0)
self.tableView.reloadRowsAtIndexPaths([indexToReload], withRowAnimation: UITableViewRowAnimation.Top)
return true
}