2014-01-21 166 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}]]; 

這將保證字體的完整高度將設置約束時予以考慮。

相關問題