UILabel和UIButton的富文本初步使用

2016-09-06  本文已影响424人  Jinkuro

很多时候,我们需要用到在一个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调整图片位置,与文字的间距等;
个人比较喜欢富文本,感觉比较轻便,干净;大家也可以试试~

上一篇下一篇

猜你喜欢

热点阅读