Autolayout: UITableViewCell中UILabel的水平布局

前言

一眨眼,六月底新入职现在公司已一月有余,期间工作节奏比之前一家增加许多,像是回到若干年前昼夜奋战几周完成一个app的状态。唯一不同的是,现在更需注重效率,复用原有的经验。

UITableViewCell中水平分布的两列UILabel

比如,在最近的项目中遇到UITableViewCell中水平分布两个Label,每个 label 都有可能有多行。根据不同的情况,两个lable的文字需要上/中/下对齐,如图:

top
上对齐
center
中对齐
bottom
下对齐

由于是单兵作战——iOS端就我一个人,所以大多数界面布局在SB中进行,可是当具有上述布局的页面多了后,通过代码来实现反而会高效。鉴于此,封装了一个Cell类以支持三种布局。具体的实现代码和使用方法见:ZZHorizontalLabelsCell,不多做解释了。有不懂的,可以留言。

布局的SB实现

为了方便使用SB布局的情况,这里也把三种布局下lable的约束说明:

上对齐

left
Left
right
Right 其中,右边Label的bottom的约束优先级设为 749.

中对齐

left
Left
right
Right

下对齐

left
Left
right
Right

总结

之所以要单独谈这一个问题,是因为其囊括:

  1. Autolayout下,UITableViewCell的高度自适应
  2. Autolayout的概念理解,尤其是hugging/compression resistance的理解

而代码和SB的两种实现都遵循相同的布局法则,这里分开来说明也是为了“兼容”纯代码和SB布局。