工作中常常要求label的高度或者是宽度自适应,甚至要求改变label中某个区域内文字的大小和颜色。其实苹果本身给我们提供了很多方法,比如设置下划线,设置大小,设置颜色等等。今天记录的是label宽高自适应以及特定区域文本颜色的改变。
先上效果图:
效果图.png
我对原有方法进行了简单封装并采用分类的方法来实现,核心代码如下:
1.lable宽高自适应
+ (UILabel *)labelString:(NSString *)string andFontSize:(CGFloat)fontSize contrainWidth:(CGFloat)width constraintHeight:(CGFloat)height {
UILabel *label = [[UILabel alloc]init];
//设置label的文字
label.text = string;
//设置label文字自动换行
label.numberOfLines = 0;
//下面返回的是一个根据给定字符串、固定的宽高以及固定的文字大小计算出来的label的CGRect,并不能改变label文字的大小
NSDictionary *attribute = @{NSFontAttributeName:[UIFont systemFontOfSize:fontSize]};
CGRect rect =[string boundingRectWithSize:CGSizeMake(width, height) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading attributes:attribute context:nil];
label.frame = rect;
//设置label背景色是为了测试,不需要的话可以删掉
label.backgroundColor = [UIColor lightGrayColor];
return label;
}
2.部分显示不同颜色和大小
- (void)changeTextWithFontSize:(CGFloat)fontSize OfLabel:(UILabel *)label ToColor:(UIColor *)color withLocation:(NSInteger)loc andLength:(NSInteger)len{
NSMutableAttributedString *string = [[NSMutableAttributedString alloc]initWithString:label.text];
//改变label某一部分字体颜色
[string addAttribute:NSForegroundColorAttributeName value:color range:NSMakeRange(loc, len)];
//改变label某一部分文字大小
[string addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:fontSize] range:NSMakeRange(loc, len)];
label.attributedText = string;
}
好记性不如烂笔头 ,准备把这些有用都上传的github,过段时间注册一个账号,后期我会把链接放到这里,需要的朋友可以下载。
网友评论