4

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

但是我怎样才能在 iOS 7.0 中做同样的事情呢?

CGSize fontSize =[self.text sizeWithFont:self.font forWidth:self.frame.size.width lineBreakMode:NSLineBreakByTruncatingTail];

可以(boundingRectWithSize:options:attributes:context:)这样做吗?我不确定,但这是我在苹果文档上搜索的方法。

感谢你的协助。

4

2 回答 2

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;
}
于 2013-09-25T16:27:16.013 回答
0

对于那些想要具有宽度功能的高度但很快的人:

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;
}

希望对以后来看的人有所帮助

于 2016-03-15T20:14:14.877 回答