【发布时间】:2016-07-15 21:41:30
【问题描述】:
我对 Apple 的动态调整单元格大小有疑问,因此我的单元格布局的逻辑不像几个堆叠的 UILabel 那样枯燥无味。
因此,我无法真正使用他们提供的动态调整大小选项,因此我需要使用 NSString boundingRect 方法手动计算单元格的高度。
这很好 - 它可以工作,但我最终需要存储很多常量来跟踪我的自动布局约束。我觉得这与自动布局应该为我做的事情背道而驰,所以我不确定这是否是实现 heightForRowAtIndexPath 的正确方法。
我基本上必须将我的约束复制到一个常量中,然后在类方法中使用这些值来生成我的高度。 Apple 几乎没有提供关于 UITableViewAutomaticDimension 工作原理的内部见解,但很明显,单元格的高度仍然是在布局之前计算的。因此,除非我知道之前调用了哪些方法,否则我无法真正添加任何复杂的逻辑。
关于我应该做什么,或者我的方法是否可以的任何想法?
【问题讨论】:
-
“我的单元格布局的逻辑没有那么简单” - 逻辑是什么?
-
boundingRect 不是计算标签(或其他)大小的正确方法,-sizeToFit 或 -sizeThatFits: 是正确的
-
@kelin 我有两个标签。如果左标签的宽度切入右标签,则将右标签移动到左标签下方。如果左标签占用多行,也将右标签移到左标签下方。
-
@Andrea 所以我需要创建一个 UILabel 的实例来计算这个?感觉有点浪费,但如果它是正确的做法,我会去的。
-
@EricGao 问题在于使用 boundingRect 您只能获得包含文本的区域。 UILabel、textview 和 textfield 包含额外的填充,风险是你要剪掉一些字形。更多信息在这里doing-it-wrong.mikeweller.com/2012/07/… 正确的方法是让单元格只用于设置数据和获取大小的建议,缓存这些高度,一切都会正常
标签: ios objective-c uitableview