NSString sizeWithFont:iOS7中的备选方案
iOS 7.0中不推荐使用方法NSString sizeWithFont:iOS7中的备选方案,ios7,Ios7,iOS 7.0中不推荐使用方法(sizeWithFont:forWidth:lineBreakMode:) 但是,我如何在iOS 7.0中执行类似于以下代码的操作呢 CGSize fontSize =[self.text sizeWithFont:self.font forWidth:self.frame.size.width lineBreakMode:NSLineBreakByTruncatingTail]; (boundingRectWithSize:options:attributes
(sizeWithFont:forWidth:lineBreakMode:)
但是,我如何在iOS 7.0中执行类似于以下代码的操作呢
CGSize fontSize =[self.text sizeWithFont:self.font forWidth:self.frame.size.width lineBreakMode:NSLineBreakByTruncatingTail];
(boundingRectWithSize:options:attributes:context:)是否可以执行此操作?我不确定,但这是我在苹果文档中搜索的方法
感谢您的帮助。我有一个NSString类别,可以获取字符串的宽度或高度:
-(CGFloat)宽度带字体:(UIFont*)字体
{
NSDictionary*attributes=[NSDictionary Dictionary WithObjectsAndKeys:font,NSFontAttributeName,nil];
返回[[[NSAttributedString alloc]initWithString:self-attributes:attributes]size].width;
}
-(CGFloat)高宽:(CGFloat)宽和字体:(UIFont*)字体
{
NSMutableAttributedString*attrStr=[[NSMutableAttributedString alloc]initWithString:self];
[attrStr addAttribute:NSFontAttributeName值:字体范围:NSMakerRange(0,[自身长度])];
CGRect rect=[attrStr boundingRectWithSize:CGSizeMake(width,CGFLOAT_MAX)选项:NSStringDrawingUserLineFragmentOrigin | NSStringDrawingUserFontLeading上下文:nil];
返回rect.size.height;
}
对于那些需要高度和宽度功能但使用swift的用户:
func HeigthWithWidth(stringToSize : String, width : CGFloat, font : UIFont) -> CGFloat {
var attrStr = NSMutableAttributedString(string: stringToSize);
attrStr.addAttribute(NSFontAttributeName, value: font, range: NSRange.init(location: 0, length: stringToSize.characters.count));
var rect = attrStr.boundingRectWithSize(CGSize(width: width, height: CGFloat.max), options: [NSStringDrawingOptions.UsesLineFragmentOrigin, NSStringDrawingOptions.UsesFontLeading], context: nil);
return rect.size.height;
}
希望这有助于以后的读者如果您仍然支持iOS6,并且没有利用任何新的渲染功能,那么仍然可以使用不推荐使用的方法。如果您只支持iOS7,boundingRectWithSize:options:attributes:context:
是正确的方法。这很好,只是heigthWithWidth中的一个小错误,最好删除boundingrectWidth参数中的固定宽度:)cRect rect=[attrStr boundingrectWidth:CGSizeMake(width,CGFLOAT\u MAX)选项:NSStringDrawingUserLineFragmentOrigin | NSStringDrawingUserFontLeading上下文:nil];