Ios UILabel:使用自动布局将字体大小调整为高度
我想要几个标签,一个在另一个下面。这些都是大小与自动布局,我想有字体大小尽可能大Ios UILabel:使用自动布局将字体大小调整为高度,ios,uilabel,autolayout,Ios,Uilabel,Autolayout,我想要几个标签,一个在另一个下面。这些都是大小与自动布局,我想有字体大小尽可能大adjustsFontSizeToFitWidth仅适用于宽度,但我得到以下结果 您可以通过调用重新计算内容高度(如果尚未将布局构建为tableview,则将布局构建为tableview可能会更容易管理): 我还必须为特定目的硬编码(添加为UIFont类别): 如果字体为常量,则可以根据字体计算标签的必要高度,如下所示: UIFont *font = [UIFont fontWithName:@"Helvetica"
adjustsFontSizeToFitWidth
仅适用于宽度,但我得到以下结果
您可以通过调用重新计算内容高度(如果尚未将布局构建为tableview,则将布局构建为tableview可能会更容易管理): 我还必须为特定目的硬编码(添加为UIFont类别):
如果字体为常量,则可以根据字体计算标签的必要高度,如下所示:
UIFont *font = [UIFont fontWithName:@"Helvetica" size:18];
UILabel *label = [UILabel new];
[label setFont:font];
[view addSubview:label];
double labelHeight = font.pointSize + fabs(font.descender);
[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[label(labelHeight)]"
options:0
metrics:@{@"labelHeight" : @(labelHeight)}
views:@{@"label" : label}]];
这将保证在设置约束条件时考虑字体的全高。我创建了它,它可以调整整个框架的文本大小,而不仅仅是宽度。
+ (int)contentSizeHeightForItem {
NSString *cat = [[UIApplication sharedApplication] preferredContentSizeCategory];
if([cat isEqualToString:UIContentSizeCategoryExtraSmall]) {
return 84;
} else if([cat isEqualToString:UIContentSizeCategorySmall]) {
return 86;
} else if([cat isEqualToString:UIContentSizeCategoryMedium]) {
return 88;
} else if([cat isEqualToString:UIContentSizeCategoryLarge]) {
return 92;
} else if([cat isEqualToString:UIContentSizeCategoryExtraLarge]) {
return 94;
} else if([cat isEqualToString:UIContentSizeCategoryExtraExtraLarge]) {
return 98;
} else if([cat isEqualToString:UIContentSizeCategoryExtraExtraExtraLarge]) {
return 102;
}
return 80;
}
UIFont *font = [UIFont fontWithName:@"Helvetica" size:18];
UILabel *label = [UILabel new];
[label setFont:font];
[view addSubview:label];
double labelHeight = font.pointSize + fabs(font.descender);
[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[label(labelHeight)]"
options:0
metrics:@{@"labelHeight" : @(labelHeight)}
views:@{@"label" : label}]];