如何使用自动布局将 UILabel 设置为 UICell 宽度的百分比

Posted

技术标签:

【中文标题】如何使用自动布局将 UILabel 设置为 UICell 宽度的百分比【英文标题】:How to set a UILabel as a percentage of the width of the UICell with autolayout 【发布时间】:2015-08-22 18:06:06 【问题描述】:

我想知道如何将 UILabel 的宽度设置为单元格总宽度的百分比?我正在使用自动布局。通常我会单击标签并将 EqualsWidth 设置为 parentView,然后调整乘数,因此我将宽度设置为 parentWidth 的百分比。但是使用 InterfaceBuilder 该选项似乎在 Cell 中不可用。

但是我想知道它可能与设置首选宽度有关:我正在使用 ios8+ 并且已经阅读过隐式宽度不适用于 ios8?

我希望实现的是标签 1 和标签 3 都是单元格宽度的 15%,标签 2 的前缘和后缘固定在 UIImageView 和标签 3 上,这将允许它根据设备的宽度。

【问题讨论】:

添加定量限制 您的意思是比率约束吗?在哪里设置相等的宽度并更改乘数?如果是这样,这就是我要解决的问题,因为当我尝试将 equalWidths 约束从标签设置到另一个元素时,该选项不可用。 【参考方案1】:

为实现在单元格内设置任何子视图的百分比宽度的目标应该执行的步骤:

    将 UIView 添加到您的单元格并将其固定到每个边缘 - 我们必须添加自定义容器视图,以便稍后能够添加“宽度均等”。

    将 UILabel 添加到之前添加的 UIView 容器中。假设我们要添加左侧标签,因此向其添加 3 个引脚:左、上、下。

    您现在可以看到您的约束设置有错误。所以让我们修复它并添加“宽度相等”引脚。在 View Controller Scene 菜单中选择 2 个视图 - 容器和标签。转到 XcodeMenu/Editor/Pin/ 并选择“宽度相等”。现在您应该在约束设置中看到没有错误,并且标签应该与容器具有相同的大小。 (请注意,有时您必须在设置约束后刷新视图框架,所以如果您看到“黄色”警告图标不要害怕,只需点击它即可。

    现在,如果您有所有限制,我们需要设置实际百分比值。打开选项卡 Size Inspector,单击步骤 3 中添加的约束上的“编辑”标题。并将乘数值更改为 0.15 (15%)。

请注意,如果您要使用相同的技术添加标签但在右侧,则需要将乘数设置为 6.66 (= 1.00 / 0.15)。

干杯!

【讨论】:

实际上这正是我想要的——通过添加 UIView 并将标签和图像创建为该视图的子视图,我可以使用我一直使用的“宽度相等”的方法,谢谢。跨度> 天才!几乎和在 android 中一样简单。【参考方案2】:

您可以设置宽度约束,然后在UITableView 单元格中为其创建一个IBOutlet,并在layoutSubViewlayoutSubView 方法中更改constraint.constanttableViewCell

【讨论】:

我从来没有想过这一点。这是标准的推荐方式吗?会试一试。谢谢 是的,你总是可以这样做,因为常量是公共财产,所以这样做没有害处......

以上是关于如何使用自动布局将 UILabel 设置为 UICell 宽度的百分比的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自动布局移动标签并为更改设置动画?

自动布局 - 将一个 UILabel 的原点替换为另一个

如何将 UILabel 限制为 25 个字符并在超过使用自动布局时显示点

自动布局和 UILabel 的问题

自动布局动画保持 UILabel 居中

UILabel 自动布局适合