本文介绍了不推荐使用 sizeWithFont 方法.boundingRectWithSize 返回意外值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在 iOS7 中,不推荐使用 sizeWithFont
,所以我使用 boundingRectWithSize
(它返回一个 CGRect 值).我的代码:
In iOS7, sizeWithFont
is deprecated, so I am using boundingRectWithSize
(which returns a CGRect value). My code:
UIFont *fontText = [UIFont fontWithName:[AppHandlers zHandler].fontName size:16];
// you can use your font.
CGSize maximumLabelSize = CGSizeMake(310, 9999);
CGRect textRect = [myString boundingRectWithSize:maximumLabelSize
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:fontText}
context:nil];
expectedLabelSize = CGSizeMake(textRect.size.width, textRect.size.height);
在textRect
中,我得到的尺寸大于我的maximumLabelSize
,与使用sizeWithFont
时的尺寸不同.我该如何解决这个问题?
In textRect
, I'm getting a size greater than my maximumLabelSize
, a different size than when using sizeWithFont
. How can I resolve this issue?
推荐答案
如何创建新标签并使用 sizeThatFit:(CGSize)size
??
How about create new label and using sizeThatFit:(CGSize)size
??
UILabel *gettingSizeLabel = [[UILabel alloc] init];
gettingSizeLabel.font = [UIFont fontWithName:@"YOUR FONT's NAME" size:16];
gettingSizeLabel.text = @"YOUR LABEL's TEXT";
gettingSizeLabel.numberOfLines = 0;
gettingSizeLabel.lineBreakMode = NSLineBreakByWordWrapping;
CGSize maximumLabelSize = CGSizeMake(310, CGFLOAT_MAX);
CGSize expectSize = [gettingSizeLabel sizeThatFits:maximumLabelSize];
上面的代码不适用于ios 7及以上,所以请在下面使用:
This upper code is not good for ios 7 and above, so please use below:
CGRect textRect = [myString boundingRectWithSize:maximumLabelSize
options:NSStringDrawingUsesLineFragmentOrigin| NSStringDrawingUsesFontLeading
attributes:@{NSFontAttributeName:fontText}
context:nil];
这篇关于不推荐使用 sizeWithFont 方法.boundingRectWithSize 返回意外值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!