美文网首页
Swift 3.0 计算UILabel/UIButton的Tit

Swift 3.0 计算UILabel/UIButton的Tit

作者: 1b3bd36d9d21 | 来源:发表于2017-04-17 22:30 被阅读1908次

因项目需要,所以研究了下,根据之前的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的Tit

      本文链接:https://www.haomeiwen.com/subject/baexzttx.html