具有自动布局的典型UITableViewCell

4
如何使用Interface Builder和自动布局来布置以下UITableViewCell? 要求: - imageView 垂直居中且尺寸固定。 - textLabel 和 detailTextLabel 之间有固定的垂直间距。 - textLabel 和 detailTextLabel 在与imageView相对的位置上是垂直居中的。 - textLabel 和 detailTextLabel 的高度总和不得超过imageView的高度。 - 如果需要,textLabel 和 detailTextLabel 可以使用多行文本。其中,textLabel 的优先级高于 detailTextLabel。
示例(非像素完美):两个示例图显示了textLabel 和 detailTextLabel分别被分成两行时的情况。

1
我曾经忽略Interface Builder和autolayout直到iOS 7。现在我正在努力使用它们,因为它们是未来。对吧?对吧? - hpique
我喜欢这个问题,但我担心任何回答都需要成为一篇长篇博客文章,不仅要提供代码(可能无法在IB中完成,因为需要编写程序逻辑来满足您的第4和第5要求),还要解释约束背后的细节(内容吸附与内容压缩)。另外,隐含着一个第6要求,即“在横屏和竖屏两种情况下均可正常工作”。 - Robotic Cat
2
我不明白为什么这个问题会得到那么多的赞(现在有4个赞)。这个问题没有满足以下要求:“提问代码必须展示对问题的基本理解。包括尝试过的解决方案,为什么它们不起作用以及期望的结果。”那么尝试的解决方案在哪里呢? - bilobatum
1
@bilobatum 实际上,我并不是在寻求代码。关于尝试的解决方案,我感觉我的所有实验都会让事情变得更加混乱而不是有所帮助。通常我会稍微添加一些内容或者发布自己的解决方案。 - hpique
1
从痛苦的过去中获得的建议:尽量避免在UITableViewCells(以及UICollectionViewCell等)中使用自动布局。除了iPhone 5s之外的其他设备上性能很可能会变差。使用CGGeometry来计算布局将更快,因此在滚动时会导致更好的帧速率。 - Matthias Bauch
显示剩余4条评论
1个回答

0

并非所有这些要求都可以使用自动布局来表达。如果您想要实现如此复杂的布局,您将不得不手动实现-layoutSubviews。

在这种情况下,考虑到只有3个视图,所需的代码量不会很多。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接