2014-01-21 119 views
2

我想要将多个标签放在另一个下面。使用AutoLayout进行大小设置时,我希望字体大小尽可能大。 adjustsFontSizeToFitWidth仅适用于宽度,但我得到以下结果UILabel:使用AutoLayout将字体大小调整为高度

enter image description here

+0

我创建了[AdjustableLabel](http://stackoverflow.com/a/33657604/1121497),它可以将文本大小调整为整个帧,而不仅仅是宽度。 –

回答

0

您可以通过调用(它可能是更容易一些具有布局建成一个实现代码如下管理重新计算你的内容高度,如果没有的话):

[cell.contentView systemLayoutSizeFittingSize:UILayoutFittingExpandedSize].height; 

我也有硬编码此为特定目的(添加为UIFont类):

+ (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; 
} 
0

如果您的字体是恒定的,则可以从字体计算标签的必要高度,像这样:

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}]]; 

这将保证字体的完整高度将设置约束时予以考虑。

相关问题