gpt4 book ai didi

objective-c - NSAttributedString boundingRectWithSize 在 iOS 6 和 iOS 7 之间给出不同的高度

转载 作者:太空狗 更新时间:2023-10-30 03:42:16 28 4
gpt4 key购买 nike

最近使用 XCode 5 将我的应用程序更新到 iOS 7,发现 boundingRectWithSize 给出不同的高度(在大小部分)计算属性字符串的边界。

以下行给出了 iOS 6 和 iOS 7 之间的不同结果:

CGRect rect = [self boundingRectWithSize:CGSizeMake(inWidth, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil];

“self”是一个 NSAttributedString,“inWidth”是字符串应容纳的最大宽度(以像素为单位)。

我认为那是因为 iOS 7 的字体处理方式与 iOS 6 不同。

有人有一个可行的解决方案来计算两个 iOS 版本上字符串的高度吗?

最佳答案

由于我们不能对所有高于 4.3 的 iOS 使用 sizeWithAttributes,因此我们必须为 7.0 和之前的 iOS 编写条件代码。所以我建议使用给定的解决方案

UILabel *gettingSizeLabel = [[UILabel alloc] init];
gettingSizeLabel.font = [UIFont fontWithName:[AppHandlers zHandler].fontName size:16];
gettingSizeLabel.text = @"YOUR TEXT HERE";
gettingSizeLabel.numberOfLines = 0;
CGSize maximumLabelSize = CGSizeMake(310, 9999); // this width will be as per your requirement

CGSize expectedSize = [gettingSizeLabel sizeThatFits:maximumLabelSize];

该选项在所有没有条件代码的 iOS 中都非常好并且运行顺畅。

关于objective-c - NSAttributedString boundingRectWithSize 在 iOS 6 和 iOS 7 之间给出不同的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19047465/

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