Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UILabel:使用自动布局将字体大小调整为高度_Ios_Uilabel_Autolayout - Fatal编程技术网

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