Swift 3.0 计算UILabel/UIButton的Title字符串长度

因项目需要,所以研究了下,根据之前的OC代码是没有办法原样转换的,因为Swift中已经没有boundingRectWithSize这个方法了。所以需要使用其他的方法,也能达到一样的效果。

先来一个OC文件代码

.h文件

+ (CGSize)sizeWithText:(NSString *)text font:(UIFont *)font;

+ (CGSize)sizeWithText:(NSString *)text font:(UIFont *)font maxWidth:(CGFloat)maxWidth;

.m文件

+ (CGSize)sizeWithText:(NSString *)text font:(UIFont *)font {
    return [self sizeWithText:text font:font maxWidth:MAXFLOAT];
}

+ (CGSize)sizeWithText:(NSString *)text font:(UIFont *)font maxWidth:(CGFloat)maxWidth {
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    dict[NSFontAttributeName] = font;
    CGSize size = CGSizeMake(maxWidth, MAXFLOAT);
    return [text boundingRectWithSize:size options:NSStringDrawingTruncatesLastVisibleLine  | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:dict context:nil].size;
}

本文重点:Swift代码,其实也就几行而已

Swift代码

/**
* 计算字符串长度
*/
static func sizeWithText(text: NSString, font: UIFont, size: CGSize) -> CGRect {
    let attributes = [NSFontAttributeName: font]
    let option = NSStringDrawingOptions.usesLineFragmentOrigin
    let rect:CGRect = text.boundingRect(with: size, options: option, attributes: attributes, context: nil)
    return rect;
}

你可能感兴趣的:(Swift 3.0 计算UILabel/UIButton的Title字符串长度)