NSString sizeWithFont:iOS7中的替代品

use*_*080 4 ios7

该方法(sizeWithFont: forWidth: lineBreakMode:)在iOS 7.0中已弃用.

但是如何在iOS 7.0中执行相同的操作呢?

CGSize fontSize =[self.text sizeWithFont:self.font forWidth:self.frame.size.width lineBreakMode:NSLineBreakByTruncatingTail];
Run Code Online (Sandbox Code Playgroud)

可以(boundingRectWithSize:options:attributes:context:)这样吗?我不确定,但这是我在Apple文档中搜索的方法.

谢谢你的协助.

mat*_*ias 15

我有一个NSString类别来获取字符串的宽度或高度:

- (CGFloat)widthWithFont:(UIFont *)font
{
    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:font, NSFontAttributeName, nil];
    return [[[NSAttributedString alloc] initWithString:self attributes:attributes] size].width;
}

- (CGFloat)heigthWithWidth:(CGFloat)width andFont:(UIFont *)font
{
    NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:self];
    [attrStr addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, [self length])];
    CGRect rect = [attrStr boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil];
    return rect.size.height;
}
Run Code Online (Sandbox Code Playgroud)