在iOS 7中替换已弃用的-sizeWithFont:constrainedToSize:

在iOS 7中,方法:


- (CGSize)sizeWithFont:(UIFont *)font

     constrainedToSize:(CGSize)size

         lineBreakMode:(NSLineBreakMode)lineBreakMode 

和方法:


- (CGSize)sizeWithFont:(UIFont *)font

不推荐使用。我该如何更换


CGSize size = [string sizeWithFont:font

                 constrainedToSize:constrainSize

                     lineBreakMode:NSLineBreakByWordWrapping];

和:


CGSize size = [string sizeWithFont:font];


慕哥6287543
浏览 663回答 3
3回答

一只萌萌小番薯

您可以尝试以下方法:CGRect textRect = [text boundingRectWithSize:size                                 options:NSStringDrawingUsesLineFragmentOrigin                              attributes:@{NSFontAttributeName:FONT}                                 context:nil];CGSize size = textRect.size;只需将“ FONT”更改为“ [UIFont字体。...]”

炎炎设计

这是简单的解决方案:要求 :CGSize maximumSize = CGSizeMake(widthHere, MAXFLOAT);UIFont *font = [UIFont systemFontOfSize:sizeHere];现在constrainedToSizeusage:lineBreakMode:在iOS 7.0中已弃用用法:CGSize expectedSize = [stringHere sizeWithFont:font constrainedToSize:maximumSize lineBreakMode:NSLineBreakByWordWrapping];现在,在更高版本的iOS 7.0中的用法将是:// Let's make an NSAttributedString firstNSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:stringHere];//Add LineBreakModeNSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];[paragraphStyle setLineBreakMode:NSLineBreakByWordWrapping];[attributedString setAttributes:@{NSParagraphStyleAttributeName:paragraphStyle} range:NSMakeRange(0, attributedString.length)];// Add Font[attributedString setAttributes:@{NSFontAttributeName:font} range:NSMakeRange(0, attributedString.length)];//Now let's make the Bounding RectCGSize expectedSize = [attributedString boundingRectWithSize:maximumSize options:NSStringDrawingUsesLineFragmentOrigin context:nil].size;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS