一个相当复杂的问题,寻找一个优雅的解决方案:
UITableViewCell
子类左侧有UILabel
,右侧有UITextView
。标签和文字视图都包含动态内容。我正在使用文本视图而不是另一个标签,因为我需要地址链接识别。
标签具有比文本视图更高的抗压性,因此其右边缘将根据需要向右扩展(达到一定限制)。文本视图的宽度将被压缩。文本视图设置为自动换行为向下扩展。
由于文本视图本身就是UIScrollView
,因此动态大小的表格视图单元格视图的常规自动尺寸机制将无效(即使用UITableViewAutomaticDimension
)。因此,我尝试实施heightForRowAtIndexPath
。为了确定必要的高度,我想只需要:
根据这些信息,我估计,我可以在辅助对象上使用sizeThatFits
来确定必要的高度。
但是,我不愿将标签和文本视图之间的水平边距硬编码到我的尺寸计算中,因此理论上我还需要NSLayoutConstraint
个出口
这看起来真的很疯狂!在我写这个实现时,我问自己是否有更简单的方法来实现同样的目标。 (这就是为什么我还没有编写代码来发布这里。)毕竟,这里唯一的难题是如何获得文本视图的可用宽度,但到达那里的方式似乎过度复杂。
任何有关简洁,优雅解决方案的想法?
附注:必须在渲染单元格之前计算。此外,在使用scrollingEnabled
时,将文本视图的false
设置为sizeThatFits
会产生奇怪的结果。