自动收缩标签,但是保持每个其他UITableViewCell相同的字体大小

我有我的应用程序中存储在UITableView中的用户列表。

每个Cell都有一个存储用户名称的标签。

我需要所有这些标签来保持相同的尺寸。

我的主要问题是自动调整每个名称标签的字体的结果在tableview内的多个不同的标签大小

因此,例如“汤姆史密斯”是短,所以字体大小是最大的“汤米史密森”,更长。 在较小的设备上可能会resize“Smitty Werbenjagermanjensen”肯定是太长,将会resize。

我需要每个tableView单元格根据内容更新其UILabel字体大小,如果一个标签缩小,缩小所有。

我不认为黑客工作,从cellForRowAtIndexPath将工作,因为当你滚动更大的名称可能会出现导致一些单元格具有不同大小的标签,至less直到我再次滚动它们,他们出列。

在这一点上,我不知道如何与Autolayout,我更喜欢这样做。

任何想法如何最好地完成这个?

你有两个select。

1)静态方法 – 在显示表格视图列表之前,查找联系人列表中最长的名称,使用函数计算满足布局要求的字体大小

func boundingRectWithSize(_ size: CGSize, options options: NSStringDrawingOptions, attributes attributes: [String : AnyObject]?, context context: NSStringDrawingContext?) -> CGRect 

并将此字体大小设置为所有单元格。

2)dynamic方法 – 现在就开始使用单元格,一旦单元格到layoutSubviews,使用通知中心发布当前大小,并在所有其他单元格中侦听此通知,如果大小较小,那么它们的当前一,应用它。

尝试设置,

  1. UILabel中的第0行
  2. 在标签中设置最小高度和宽度
  3. 在标签的所有四边设置约束。