gpt4 book ai didi

ios - 如何使用行距准确获取 UILabel 的高度?

转载 作者:可可西里 更新时间:2023-11-01 04:24:52 24 4
gpt4 key购买 nike

我正在编写一个可扩展的 tableView 标题,我需要在 tableView 委托(delegate)方法中准确设置标题的高度。我现在使用以下方法来计算标题(多行标签)的高度:

CGRect calcuRect = [headerText boundingRectWithSize:CGSizeMake(myLabelWitdh, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:myLabelFont} context:nil];
CGFloat headerHeight = calcuRect.size.height;

但是,我发现计算出的高度只是关于不包括行距的文本。那么如何获取标签的行距高度呢?或者如何通过行距获得 UILabel 的准确高度?

最佳答案

您可以通过完全传递相同的字体大小和类型并进行一些计算来获得 UILabel 的确切高度。
这里我使用了 Helvetica 字体的 UILabel,字体大小为 16。

Objective-C

- (CGFloat)requiredHeight:(NSString*)labelText{

UIFont *font = [UIFont fontWithName:@"Helvetica" size:16.0];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, CGFLOAT_MAX)];
label.numberOfLines = 0;
label.lineBreakMode = NSLineBreakByWordWrapping;
label.font = font;
label.text = labelText;
[label sizeToFit];
return label.frame.size.height;

}

输出

CGFloat size = [self requiredHeight:@"iOS Rocks"];
NSLog(@"%f",size);

size = [self requiredHeight:@"iOS Rocks\n"];
NSLog(@"%f",size);

控制台输出

2016-04-10 01:37:46.812 testPro[6093:327503] 18.500000
2016-04-10 01:37:46.814 testPro[6093:327503] 37.000000

swift 2.2

func requiredHeight(labelText:String) -> CGFloat {

let font = UIFont(name: "Helvetica", size: 16.0)
let label:UILabel = UILabel(frame: CGRectMake(0, 0, 200, CGFloat.max))
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.ByWordWrapping
label.font = font
label.text = labelText
label.sizeToFit()
return label.frame.height

}

编辑
Swift 3.0

func requiredHeight(labelText:String) -> CGFloat {

let font = UIFont(name: "Helvetica", size: 16.0)
let label:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: .max))
label.numberOfLines = 0
label.lineBreakMode = .byWordWrapping
label.font = font
label.text = labelText
label.sizeToFit()
return label.frame.height

}

关于ios - 如何使用行距准确获取 UILabel 的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36512652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com