美文网首页
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