UILabel实现自适应宽高需要注意的地方(三)

本文介绍了UILabel的高度自适应及富文本应用技巧,包括通过NSMutableAttributedString实现行内距设置及文字颜色变化的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
 
一、需求图如下所示 
 
  1. UILabel 的高度自适应
  2. UILabel中的段落间距可设置
 
图片效果如下:
 
调整段落适应长宽高方式:
 
 567BC1DC 8B4B 45DE 85D5 3754A1490FB2
 
 
需求:
 
保证“游戏玩法” 章节,UILabel高度自适应,行内距为4px
 
做法:
 
UILabel实现自适应宽高(一)中说明了 UILabel 自适应的方法,但是如果加行间距,就要用到  NSMutableAttributedString  富文本的方式实现,来判断行内距然后再通过 sizetofit 进行高度自适应。
 
 
自适应方法如下:
 
Coding:
 
- (void)setLineSpacing:(CGFloat)spacing label:(UILabel *)label
{
   
if(!label.text.length) return;
   
NSMutableAttributedString *attributedString = [[NSMutableAttributedStringalloc] initWithString:label.text];
   
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStylealloc] init];
    [paragraphStyle
setLineSpacing:spacing];
    [attributedString
addAttribute:NSParagraphStyleAttributeNamevalue:paragraphStyle range:NSMakeRange(0, [label.textlength])];
    [label
setAttributedText:attributedString];
    label.
lineBreakMode = NSLineBreakByCharWrapping;
    [label
sizeToFit];
}
 
注意一下label.lineBreakMode = NSLineBreakByCharWrapping;这句话一定要在UILabel设置富文本之后加,不然会不起作用。
 
sizeToFit 自适应方法也要在最后加,不然会被富文本方法替换掉。
 
 
二、需求图如下所示
 
 
 
  1. UILabel 中如果为数字,会显示红色
 
图片效果如下:
 
 4BF510FE ECA9 4058 BD7F 0A5E1F68626F
 
做法: 通过UILabel的富文本来实现此方法,遍历UILabel文本中如果有数字,自动设置为红色.
 
实现:
 
NSMutableString * subtitlelabelStr=[NSMutableStringstringWithFormat:@"共参与%ld,%@", _dataModel.count,_dataModel.last_time];
   
_subtitlelabel.text = subtitlelabelStr;

   
NSString *content = subtitlelabelStr;
   
NSArray *number = @[@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9"];
   
NSMutableAttributedString *attributeString  = [[NSMutableAttributedStringalloc]initWithString:content];
   
for (int i = 0; i < content.length; i ++) {
       
NSString *a = [content substringWithRange:NSMakeRange(i, 1)];
       
if ([number containsObject:a]) {
            [attributeString
setAttributes:@{NSForegroundColorAttributeName:NF_Color_C19,NSFontAttributeName:[UIFontsystemFontOfSize:Near_Final_Font_T9]}range:NSMakeRange(i, 1)];
        }
    }
   
_subtitlelabel.attributedText = attributeString;

 
问题:如果实现UIlabel 内容的文字全部为随机颜色,如何实现?
 
 
 
 
 
 
 
 
 
 
 

转载于:https://www.cnblogs.com/firstrate/p/6725855.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值