解決NSAttributedString與UILabel高度自適應計算問題


兩個類擴展方法:

/**

 *  修改富文本的顏色

 *

 *  @param str   要改變的string

 *  @param color 設置顏色

 *  @param range 設置顏色的文字范圍

 *

 *  @return 新的AttributedString

 */

- (NSMutableAttributedString *)setTextColorWithStr:(NSString *)str Color:(UIColor *)color Range:(NSRange)range;

 

/**

 *  修改富文本的字體

 *

 *  @param str   要改變的string

 *  @param font  設置字體

 *  @param range 設置字體的文字范圍

 *

 *  @return 新的AttributedString

 */

- (NSMutableAttributedString *)setTextFontWithStr:(NSString *)str Font:(UIFont *)font Range:(NSRange)range;

 

兩個類擴展方法的實現:

- (NSMutableAttributedString *)setTextColorWithStr:(NSString *)str Color:(UIColor *)color Range:(NSRange)range{

    if (str == nil) return nil;

    NSMutableAttributedString *newStr = [[NSMutableAttributedString alloc] initWithString:str];

    [newStr addAttribute:NSForegroundColorAttributeName value:color range:range];

    return newStr;

}

- (NSMutableAttributedString *)setTextFontWithStr:(NSString *)str Font:(UIFont *)font Range:(NSRange)range{

     if (str == nil) return nil;

     NSMutableAttributedString *newStr = [[NSMutableAttributedString alloc] initWithString:str];

    [newStr addAttribute:NSFontAttributeName value:font range:range];

    return newStr;

}

 

//消息內容frame

//先給定一個寬度,高度無限大

CGFloat CommenntWidth = 300;

    CGSize maxSize = CGSizeMake(CommenntWidth, MAXFLOAT);

//設定attributedString的字體及大小,一定要設置這個,否則計算出來的height是非常不准確的

    [attributedString addAttribute:NSFontAttributeName value:BKFont(16) range:RANGE(0, attributedString.length)];

//計算attributedString的rect

    _contentRect = [attributedString boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin context:nil];

 

此文為原文,轉發請注明出處,謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM