zoukankan      html  css  js  c++  java
  • UILabel实现自适应宽高需要注意的地方(三)

     
     
    一、需求图如下所示 
     
    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
    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 内容的文字全部为随机颜色,如何实现?
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    Ubuntu 14.04 LTS Server 无法挂载光盘 启动initramfs等问题
    Linux的交叉编译 及configure配置
    大话设计模式读书笔记(五) 代理模式
    大话设计模式读书笔记(三) 单一职责原则和开放-封闭原则和依赖倒转原则
    大话设计模式读书笔记(二) 策略模式
    Java NIO(一) 初步理解NIO
    大话设计模式读书笔记(一) 简单工厂模式
    多线程设计模式(一) Single Threaded Execution
    多线程详细解析(二) 线程的共享互斥与线程的协调
    多线程详细解析(一) 创建线程
  • 原文地址:https://www.cnblogs.com/firstrate/p/6725855.html
Copyright © 2011-2022 走看看