iOS 8.2 UITableView 的默认行高 bug

Cell高度错误

很简单的一个登录页面,用 Storyboard 的 Static Cell 来实现。开发时没有发现任何问题,交予测试时反馈输入框太小了,就是上面截图的样子,现象 100% 出现。而且发现,从该页面 Push 到下一层页面再 Pop 回该页面后,高度即可恢复正常。

检查程序没发现任何问题,Cell Height 都采用了默认高度。在我的模拟器上和其他测试设备上也无法重现这个问题。

检查那台出问题的测试机,发现系统版本为 iOS 8.2,而我的模拟器和测试机上都运行着 iOS 8.3 或 iOS 7.1。于是安装 iOS 8.2 模拟器,问题在 8.2 版本的模拟器上重现了!

经研究,推测为 iOS 8.2 的系统 bug,只要是采用了 TableView 的默认行高,就会出现行高不正确的问题。这个 bug 已经在 iOS 8.3 上得到修复。若要确保 iOS 8.2 系统下也不会出现显示异常,可以采用以下任意一种方式:

  1. 把 TableView 的 Row Height 属性设置为不是默认 44 的值。
  2. 把 TableView 中的 TableViewCell 的 Row Height 属性,选中 Custom。