UITableView 中 Auto Layout 实践

autolayout

Table Header

新建一个Xib和Swift文件来进行布局,这时Nib中的View是一个SizeClass的正方型,无法将其缩放至布局的大小。同时也无法为最下面的元素和底部之前建立关系()。

并在TableView中设置其为Header,问题出就现了,高度不对,显示出来大片的空白。

理论上Autolayout应该会自动计算高度,而不是让我手工来计算(当然,这里手工计算的结果是正确的,只是太Stupid)。

通用 Cell

自定义行高

iOS 8中可直接使用Self Sizing Cells

1
2
3
4
5
6
7
8
9
10
11
Cell is sent a resolved width when it is created/dequeued using one of the two methods:
# when using Auto Layout
systemLayoutSizeFittingSize(targetSize: CGSize) -> CGSize
# without Auto Layout
sizeThatFits(size: CGSize) -> CGSize
tableView.estimatedRowHeight = 68.0
tableView.rowHeight = UITableViewAutomaticDimension

超全的文档

Using Auto Layout in UITableView for dynamic cell layouts & variable row heights
Using Auto Layout in UITableView for dynamic cell layouts & variable row heights
http://stackoverflow.com/questions/18746929/using-auto-layout-in-uitableview-for-dynamic-cell-layouts-variable-row-heights

Manage iOS App Layouts with Autolayout
http://www.sitepoint.com/manage-ios-app-layouts-autolayout/

细数AutoLayout以来UIView和UIViewController新增的相关API – UIViewController篇
http://chun.tips/blog/2014/10/25/xi-shu-autolayoutyi-lai-uiviewhe-uiviewcontrollerxin-zeng-de-xiang-guan-api-uiviewcontrollerpian/

Towards Responsive iOS Design (I): Beyond AutoLayout and Size Classes
http://digitalleaves.com/blog/2014/09/towards-responsive-ios-design-i-beyond-autolayout-and-size-classes/