为啥在尝试垂直对齐我的 UILabel 时 sizeToFit 不起作用?它只是停留在中心

Posted

技术标签:

【中文标题】为啥在尝试垂直对齐我的 UILabel 时 sizeToFit 不起作用?它只是停留在中心【英文标题】:Why does sizeToFit not work when trying to vertically align my UILabel? It just stays in the center为什么在尝试垂直对齐我的 UILabel 时 sizeToFit 不起作用?它只是停留在中心 【发布时间】:2013-10-02 03:14:33 【问题描述】:

我正在阅读 this post 以获取有关如何在 UILabel 中垂直对齐文本的建议,顶部评论似乎提供了一个很好的解决方案。

我有我的UILabel,行数为0。然后在viewDidLoad作为视图控制器的一部分,我在上面调用了sizeToFit,但它仍然只占据中间。

在 Interface Builder 中看起来像这样:

当我运行它时看起来完全一样,当我希望它非常靠近时,文本仍然离导航栏很远,最好是在那个轮廓框的顶部。

我做错了什么?

【问题讨论】:

【参考方案1】:

就在他原始答案上方的底部,他引用了另一个用户的话

如果您的标签作为使用自动布局的 ViewController 的视图的子视图包含在 nib 或情节提要中,则将 sizeToFit 调用放入 viewDidLoad 将不起作用,因为在调用 viewDidLoad 后自动布局会调整子视图的大小和位置将立即撤消 sizeToFit 调用的影响。但是,从 viewDidLayoutSubviews 中调用 sizeToFit 会起作用。

【讨论】:

【参考方案2】:

该屏幕截图显示了针对标签的特定高度限制(右侧的蓝色 I 条)。这将覆盖任何 sizeToFit 调用,因为它们只会影响内在大小。

如果您删除该约束,标签的固有大小将使其成为包含文本的最小大小,因此将位于导航栏旁边。

【讨论】:

以上是关于为啥在尝试垂直对齐我的 UILabel 时 sizeToFit 不起作用?它只是停留在中心的主要内容,如果未能解决你的问题,请参考以下文章

使用 lineHeightMultiple 控制行间行距时,如何在 UITableViewCell 中垂直对齐我的 UILabel?

UILabel 垂直对齐缺少的空间

在 UILabel 中将文本垂直对齐到顶部

在 UILabel 中将文本垂直对齐到顶部

在 UILabel 中将文本垂直对齐到顶部

如何将 UIButton 文本与 UILabel 文本垂直对齐?