Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.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 7中,当adjustsFontSizeToFitWidth为YES时,如何从UILabel获取调整后的字体大小?_Ios_Nsstring_Uikit_Uilabel_Textkit - Fatal编程技术网

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

在iOS 7中,当adjustsFontSizeToFitWidth为YES时,如何从UILabel获取调整后的字体大小?,ios,nsstring,uikit,uilabel,textkit,Ios,Nsstring,Uikit,Uilabel,Textkit,我有一个标签设置为adjustsFontSizeToFitWidth=YES,我需要得到实际显示的字体大小 现在iOS 7不推荐使用以前使用过的所有方法,因此所有问题都建议使用这些不推荐使用的方法 一旦我被允许,我会把这个问题作为赏金。请不要关闭。有一个只读属性允许您关闭。你可以这样访问它 nameLabel.adjustsFontSizeToFitWidth = YES; //Make sure to use the line below AFTER the line above floa

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

现在iOS 7不推荐使用以前使用过的所有方法,因此所有问题都建议使用这些不推荐使用的方法


一旦我被允许,我会把这个问题作为赏金。请不要关闭。

有一个只读属性允许您关闭。你可以这样访问它

nameLabel.adjustsFontSizeToFitWidth = YES;

//Make sure to use the line below AFTER the line above

float fontSize = nameLabel.font.xHeight;

这将为您提供调整到适合宽度后的字体大小。

您可以使用这些代码行获得
UILabel
文本的字体大小

UILabel *lblObj = [[UILabel alloc]init];
lblObj.text = @" Your Text";
lblObj.adjustsFontSizeToFitWidth = YES;
float size = lblObj.font.pointSize; //Here You will get the actual size of the text.
float lineHeight = lblObj.font.lineHeight;

试试这个。

如果在iOS 7中使用adjustsFontSizeToFitWidth,请在请求字体大小之前插入
[lblObj sizeToFit]

UILabel*label=[[UILabel alloc]initWithFrame:CGRectMake(0,0,100,40)];
label.text=@“您的文本在此进入此标签”;
label.adjustsFontSizeToFitWidth=是;
NSMutableAttributedString*attrStr=[[NSMutableAttributedString alloc]initWithAttributedString:label.attributedText];
//获取理论字体大小
[attrStr setAttributes:@{NSFontAttributeName:label.font}范围:NSMakeRange(0,attrStr.length)];
NSStringDrawingContext*上下文=[NSStringDrawingContext新建];
context.minimumScaleFactor=label.minimumScaleFactor;
[attrStr boundingRectWithSize:label.frame.size选项:NSStringDrawingUserLineFragmentOrigin上下文:上下文];
CGFloat theoreticalFontSize=label.font.pointSize*context.actualScaleFactor;
NSLog(@“理论容量:%f”,理论容量);
NSLog(@“AttributedString宽度:%f”,[attrStr size].Width);
双尺度因子=label.frame.size.width/([attrStr size].width);
双显示FontSize=理论内容大小*缩放因子;
NSLog(@“实际显示字体大小:%f”,displayedFontSize);
//结果验证
双重验证=(displayedFontSize*[attrStr length]);
NSLog(@“应等于%0.5f:%0.5f”,[attrStr size].width/17.0,label.frame.size.width/displayedFontSize);

-1此答案不正确。看看这个博客:-xHeight和UIFont的所有其他指标仍然只反映原始字体大小。在iOS 8上,
float size=lblObj.font.pointSize
为我提供了请求的字体大小,而不是实际显示的字体大小。这里讨论了这个问题并给出了答案!请在下面的底部检查我的答案