UILabel 宽度和自动布局的困难

Difficulty with UILabel width and Autolayout

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

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

@interface Plus20UILabel : UILabel
@end

@implementation Plus20UILabel

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

@end

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