iOS 8使用UITextView自动调整UITableViewCell大小

Ale*_*lex 21 uitableview autolayout ios8

iOS 8为tableViews引入了一种方法,可以根据内容自动调整单元格的高度(通过AutoLayout).

// in viewDidLoad:
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 44.0
Run Code Online (Sandbox Code Playgroud)

我已经使用标签,图像等.

但是,一旦单元格的文本视图发生变化,我无法找到表格视图单元格自动增长的方法吗?

有关设置的更多信息:单元格内的UITextView对表格视图单元格的contentView具有水平和垂直约束.我还禁用了文本视图的滚动.

我还尝试手动更改单元格的高度约束,但单元格也不会采用这些更改.

Jur*_*ure 23

如果一切设置正确(自动布局限制),您不必自己计算任何东西.

所有你需要做的是禁用的UITextView的滚动enabled属性然后textViewDidChange调用tableView.beginUpdates()tableView.endUpdates().

有关详细说明,请查看我写帖子,其中还包括一个工作示例项目.


Kar*_*han 4

textViewDidBeginEditing:按照您的方法重新加载单元格UITextViewDelegate

[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForItem:0 inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
Run Code Online (Sandbox Code Playgroud)

显然,您应该将索引路径更改为适合您的单元格的正确路径。这将使单元格更新其约束并调整自身大小。

  • 即使没有“reloadRowsAtIndexPaths:”,它似乎也能工作,它的好处是键盘可以留在那里 (3认同)
  • 对我来说,这种方法会导致表视图在每次击键时滚动回顶部,这使得文本视图基本上无法使用 - 其他人也有这个问题吗?(iOS 8.1.2) (2认同)