美文网首页
label宽高自适应&改变部分文本颜色

label宽高自适应&改变部分文本颜色

作者: 横爬介士 | 来源:发表于2016-03-22 15:54 被阅读284次

工作中常常要求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,过段时间注册一个账号,后期我会把链接放到这里,需要的朋友可以下载。

最后:iOS技术交流群

群二维码

相关文章

网友评论

      本文标题:label宽高自适应&改变部分文本颜色

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