美文网首页
UILabel和UIButton的富文本初步使用

UILabel和UIButton的富文本初步使用

作者: Jinkuro | 来源:发表于2016-09-06 12:19 被阅读424次

    很多时候,我们需要用到在一个label里面添加一张小图片,实现图文混排的功能,就像下图


    8BCAF8CF-5ED3-49F1-AC9E-3EA1325D7AD1.png

    在这里我经常使用的是富文本,进行图文混排,这样就能够避免新建一个UIImageView,然后在进行各种约束之类的繁琐操作;

    具体代码如下:
    //1.首先你需要创建一个可变的AttributeString,里面存入你需要的字符串

        NSMutableAttributedString *attri = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@" %@",self.model.address]];
    

    //2.其次需要创建附件,这个附件是用来存放图片的

        NSTextAttachment *attach = [[NSTextAttachment alloc]init];
        attach = [[NSTextAttachment alloc]init];
    
        //-->给附件传入图片
        attach.image = [UIImage imageNamed:@"实验室位置"];
    
        //-->给附件一个frame,默认是和普通的文字一样的坐标,如果觉得没有对齐,可以在这里更改x和y值
        //(此处小图片的宽高我进行了屏幕适配,乘以了比例)
        attach.bounds = CGRectMake(0, - 2, 10 * self.view.width / 320.0f, 12 * self.view.width / 320.0f);
    
        //-->将附件转换成AttributeString,供后面拼接
        NSAttributedString *imgStr = [NSAttributedString attributedStringWithAttachment:attach];
    

    //3.然后将附件和文字拼接起来

        NSMutableAttributedString *attrF = [[NSMutableAttributedString alloc]initWithAttributedString:imgStr];
        [attrF appendAttributedString:attri];
    

    //4.接下来对新生成的拼接富文本进行进一步的文本属性设置,可设置颜色,字体等;

        [attrF addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12 * self.view.width / 320.0f] range:NSMakeRange(0, self.model.address.length + 2)];
        //-->注意一下字符串的长度,我偷懒使用了一个空格设置间距,记得在length里面加上;
        [attrF addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(0, self.model.address.length + 2)];
    

    //5.最后给label赋予富文本字符,此处若是UIButton,则为setAttributedTitle

        [self.locationLabel setAttributedText:attrF];
    

    当然,对于UIButton,可以直接使用setImage方法,然后更改edgeInsets调整图片位置,与文字的间距等;
    个人比较喜欢富文本,感觉比较轻便,干净;大家也可以试试~

    相关文章

      网友评论

          本文标题:UILabel和UIButton的富文本初步使用

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