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

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

作者: Sunny_Fight | 来源:发表于2017-06-22 17:17 被阅读25次

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

    相关文章

      网友评论

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

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