gpt4 book ai didi

ios - 文本高度的计算在 iOS 7 上存在错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:07:01 24 4
gpt4 key购买 nike

我有一段代码计算一段文本将要用完的高度并相应地设置 uiLabel:

text = [self tableText:[indexPath row] forIndex:index];
constraint = CGSizeMake(detailWidth, 20000.0f);
size = [text sizeWithFont:[UIFont systemFontOfSize:16.0f] constrainedToSize:constraint lineBreakMode:NSLineBreakByWordWrapping];

UILabel *presidentDetailLabel = (UILabel *)[cell viewWithTag:200];
[presidentDetailLabel setFrame:CGRectMake(presidentDetailLabel.frame.origin.x, presidentDetailLabel.frame.origin.y, presidentDetailLabel.frame.size.width, MAX(size.height, presidentDetailLabel.frame.size.height))];
[presidentDetailLabel setText:text];

该代码在 iOS 6 上运行良好,但当我在 iOS 7 上编译它并在模拟器上运行时。返回的尺寸似乎少了几个像素。我实际上有一个 NSlog 来检查字体大小和返回值是否为 16。

只有这一次我使用属性字符串时,类似的代码块才出现同样的问题,它仍然返回一个短几个像素的高度。从我收集到的。文本似乎用完了相当于字体大小 17 的空间。

关于如何解决这个错误有什么建议吗?

最佳答案

我在我的一些项目中使用了以下几行,并且在 iOS 5 及更高版本中始终像 charm 一样工作(在较低版本中未使用)。

CGSize constraint = CGSizeMake(label.frame.size.width, 2000.0f);

CGSize size;

NSStringDrawingContext *context = [[NSStringDrawingContext alloc] init];

CGSize boundingBox = [label.text boundingRectWithSize:constraint
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:label.font}
context:context].size;

size = CGSizeMake(ceil(boundingBox.width), ceil(boundingBox.height));

[label setFrame:CGRectMake(label.frame.origin.x, label.frame.origin.y, label.frame.size.width, size.height)];

关于ios - 文本高度的计算在 iOS 7 上存在错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21178508/

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