sizeWithFont: ConstrainedToSize: lineBreakMode: 方法在 iOS 7 中已弃用
Posted
技术标签:
【中文标题】sizeWithFont: ConstrainedToSize: lineBreakMode: 方法在 iOS 7 中已弃用【英文标题】:sizeWithFont: ConstrainedToSize: lineBreakMode: method is deprecated in iOS 7 【发布时间】:2014-02-09 02:57:53 【问题描述】:,我有点不确定如何准确处理。上网查了一下,发现有一种新的处理方法,就是:
[txt drawWithRect: options: attributes: context:]
这是我当前尝试运行的方法:
+ (CGSize)textSizeForText:(NSString *)txt
CGFloat width = [UIScreen mainScreen].applicationFrame.size.width * 0.75f;
CGFloat height = MAX([JSBubbleView numberOfLinesForMessage:txt],
[txt numberOfLines]) * [JSMessageInputView textViewLineHeight];
return [txt sizeWithFont:[JSBubbleView font]
constrainedToSize:CGSizeMake(width - kJSAvatarSize, height + kJSAvatarSize)
lineBreakMode:NSLineBreakByWordWrapping];
但我很难将其转换为新方法。主要是 lineBreakMode: 在新方法中没有。有任何想法吗?
【问题讨论】:
deprecated in ios 7 " sizeWithFont: constrainedToSize: lineBreakMode: " how can I replacement?的可能重复 【参考方案1】:在新方法中,对于换行,你必须先创建一个 NSMutableParagraphStyle 样式:
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
然后通过传递所有必要的参数来简单地使用新方法
CGRect textRect = [text boundingRectWithSize:CGSizeMake(width - kJSAvatarSize, height + kJSAvatarSize)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@NSParagraphStyleAttributeName: paragraphStyle.copy
context:nil];
return textRect.size;
如果你想让这成为潮流,你可以这样做
return ([text boundingRectWithSize:CGSizeMake(width - kJSAvatarSize, height + kJSAvatarSize)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@NSParagraphStyleAttributeName: paragraphStyle.copy
context:nil]).size;
希望有帮助
我将在上面的答案中添加字体属性
return ([text boundingRectWithSize:CGSizeMake(width - kJSAvatarSize, height + kJSAvatarSize)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@NSParagraphStyleAttributeName: paragraphStyle.copy, NSFontAttributeName:[UIFont fontWithName:@"HelveticaNeue" size:14]
context:nil]).size;
【讨论】:
嘿,谢谢你的回答,我将在 lineBreakMode 的同时添加字体属性 段落样式到底是什么?弃用的代码中没有那个变量,那么,它应该有什么值呢?以上是关于sizeWithFont: ConstrainedToSize: lineBreakMode: 方法在 iOS 7 中已弃用的主要内容,如果未能解决你的问题,请参考以下文章
sizeWithFont:constrainedToSize:lineBreakMode 已弃用