// UILabel+Attributed.h
#import <UIKit/UIKit.h>
@interface UILabel (Attributed)
- (void)text:(NSString *)str color:(UIColor *)color font:(UIFont *)font;
- (void)changeColor;
//-----------------------------------------------------------
// UILabel+Attributed.m
#import "UILabel+Attributed.h"
#import <objc/runtime.h>
@implementation UILabel (Attributed)
- (void)text:(NSString *)str color:(UIColor *)color font:(UIFont *)font
{
if (!str)
str = self.text;
if (!color)
color = self.textColor;
if (!font)
font = self.font;
[self.attributeString setAttributes:@{NSForegroundColorAttributeName:color,
NSFontAttributeName:font}
range:[self.text rangeOfString:str]];
}
- (void)changeColor
{
self.attributedText = self.attributeString;
}
- (NSMutableAttributedString *)attributeString
{
NSMutableAttributedString *attributeString = objc_getAssociatedObject(self, _cmd);
if (attributeString && [attributeString.string isEqualToString:self.text]) {
return attributeString;
}
attributeString = [[NSMutableAttributedString alloc] initWithString:self.text];
objc_setAssociatedObject(self, _cmd, attributeString, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
return attributeString;
}
//-----------------------------------------------------------
// >ios7 根据文字内容计算UILable高度(自适应)
- (float)cellHeight:(NSString *)comment
{
NSDictionary *attributes = @{NSFontAttributeName: [UIFont systemFontOfSize:14]};
CGRect rect = [comment boundingRectWithSize:CGSizeMake(320, MAXFLOAT)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:attributes
context:nil];
return rect.size.height;
}