需要 AutoLayout UITableView 自定义单元格解决方案

Posted

技术标签:

【中文标题】需要 AutoLayout UITableView 自定义单元格解决方案【英文标题】:AutoLayout UITableView Custom Cell Solution Needed 【发布时间】:2016-01-12 07:51:45 【问题描述】:

我对带有自定义单元格的 UITableView 使用 AutoLayout。该单元格包含两个 UIView。第一个视图比第二个更长,并且包含文本。第二个 UIView 持有一个图标。

第一个 UIView (A) 使用前导空间固定到内容视图的左侧到超级视图(内容视图),第二个 UIView (B) 使用尾随空间固定到右侧到超级视图。

在 iPhone 5 上,UIView (A) 占据了大部分的显示空间,并与 UIView (B) 之间的空间很小,如下图所示。

在 iPhone 6/6s 上,UIView (A) 和 UIView (B) 之间的空间很大,如下所示。

我希望 UIView (A) 增加宽度以填充空间,同时 UIView (B) 保持固定在右侧。有没有办法使用 AutoLayout 做到这一点?

【问题讨论】:

你用过multiplier吗? 【参考方案1】:

将宽度约束添加到视图 B。将视图 A 的尾随空间约束添加到视图 B 所需的值(5?)

【讨论】:

【参考方案2】:

这是你的观点A

这是你的观点 B

给视图 A 等宽,然后使用乘数

您的输出在 iphone 4 和 iphone 6 plus 中应该是这样的

【讨论】:

您需要在此处使用乘数而不是固定宽度,以确保视图在每个屏幕上都正确呈现。 71 像素在 iPhone 5S 上相当不错,而在 6S Plus 上则相当小。因此,我认为这不应该是答案。 感谢 Rahul,我被困在这个布局上,但找不到简单的解决方案。【参考方案3】:

只需将视图 A 的尾随空格添加到视图 B 约束。如果视图 B 具有固有大小,则视图 B 不必具有宽度约束。否则需要添加 View B 的宽度约束。

【讨论】:

以上是关于需要 AutoLayout UITableView 自定义单元格解决方案的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 和 AutoLayout - 没有显示表格

使用 Autolayout 在 UITableView 中异步加载图像

如何使用 Autolayout 调整 UITableView 的大小?

使用 AutoLayout addSubview 到 UITableView 后崩溃

添加到父视图时向 UITableView 添加 AutoLayout 约束

UIViewController 有两个 UITableView 和 Autolayout