UILabel 宽度和自动布局的困难

Posted

技术标签:

【中文标题】UILabel 宽度和自动布局的困难【英文标题】:Difficulty with UILabel width and Autolayout 【发布时间】:2015-02-02 23:14:19 【问题描述】:

我觉得这是一个非常简单的问题——我到处寻找答案,但一无所获。 在我的 UITableViewController 中,我设置了自定义 UITableViewCell 的 UILabel 的文本(在情节提要中制作)。我希望标签的宽度是文本的宽度(这并不难计算)加上一个大约 20 的常数。我找不到设置这个的方法? 我应该只以编程方式创建 UILabel 吗?自动布局不能帮我解决这个问题吗?

【问题讨论】:

两种方法都可以:您可以计算标签内文本的大小并将其框架设置为正确的大小,或者您可以使用自动布局。使用 Xcode 界面构建器设置自动布局约束实际上非常容易。 我想你的答案在这个链接@***.com/questions/8796862/… 【参考方案1】:

在界面生成器中,正如您所描述的那样,这可能是不可能的。您可以做的一件事是为标签的内在内容大小指定不同的值。创建一个迷你 UILabel 子类:

@interface Plus20UILabel : UILabel
@end

@implementation Plus20UILabel

-(CGSize)intrinsicContentSize
    CGSize contentSize = [super intrinsicContentSize];
    return CGSizeMake(contentSize.width + 20, contentSize.height);
 

@end

然后在IB中指定标签是Plus20UILabel。这会将新值输入 AutoLayout 引擎并相应地调整标签和所有内容。

【讨论】:

非常简单的答案!谢谢!!

以上是关于UILabel 宽度和自动布局的困难的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自动布局在 iOS 中根据文本长度更改 UILabel 宽度

手动设置UILabel宽度自动布局的高度

自动布局 - UILabel 在方向更改后宽度缩小,这是由另一个应该自动调整字体大小的 UILabel 引起的

动态更改 UILabel 宽度不适用于自动布局

自动布局和 UILabel 的问题

无法在具有动态宽度的 Tablecell 中并排自动布局两个 UILabel