gpt4 book ai didi

ios - 在 iOS 7 中,当 adjustsFontSizeToFitWidth 为 YES 时,如何从 UILabel 获取调整后的字体大小?

转载 作者:技术小花猫 更新时间:2023-10-29 10:28:25 33 4
gpt4 key购买 nike

我有一个设置为 adjustsFontSizeToFitWidth = YES 的标签,我需要获取实际显示的字体大小。

现在 iOS 7 弃用了所有以前有效的方法,SO 上的所有问题都建议使用这些弃用的方法。

一旦 SO 允许,我就会将这个问题悬赏。请不要关闭。

最佳答案

在 iOS 7 中使用 adjustsFontSizeToFitWidth 时 UILabel 显示 fontSize

UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 40)];
label.text = @" Your Text goes here into this label";
label.adjustsFontSizeToFitWidth = YES;

NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithAttributedString:label.attributedText];
// Get the theoretical font-size
[attrStr setAttributes:@{NSFontAttributeName:label.font} range:NSMakeRange(0, attrStr.length)];

NSStringDrawingContext *context = [NSStringDrawingContext new];
context.minimumScaleFactor = label.minimumScaleFactor;
[attrStr boundingRectWithSize:label.frame.size options:NSStringDrawingUsesLineFragmentOrigin context:context];
CGFloat theoreticalFontSize = label.font.pointSize * context.actualScaleFactor;

NSLog(@"theoreticalFontSize: %f",theoreticalFontSize);
NSLog(@"AttributedString Width: %f", [attrStr size].width);
double scaleFactor=label.frame.size.width/([attrStr size].width);
double displayedFontSize=theoreticalFontSize*scaleFactor;
NSLog(@"Actual displayed Font Size: %f",displayedFontSize);

// Verification of Result
double verification=(displayedFontSize * [attrStr length]);
NSLog(@"Should be equal to %0.5f: %0.5f ", [attrStr size].width/17.0, label.frame.size.width/displayedFontSize);

关于ios - 在 iOS 7 中,当 adjustsFontSizeToFitWidth 为 YES 时,如何从 UILabel 获取调整后的字体大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19197127/

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