iOS开发(OC)——文字的自适应高度和行间距的设置

在开发过程中,会编写一些详情页,有关详情的介绍一般都比较长,但是由于是最后一个页面了,所以需要全部显示,这时就需要用到自适应高度,让文字自动换行。

首先创建label,把frame设置为CGRectMake(0, 0, 0, 0)

UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
    label.text=@"文字的自适应高度和行间距的设置文字的自适应高度和行间距的设置文字的自适应高度和行间距的设置文字的自适应高度和行间距的设置文字的自适应高度和行间距的设置文字的自适应高度和行间距的设置";
    [self.view addSubview:label];

多行显示的设置

label.numberOfLines=0;//行数设为0,表示不限制行数
    //根据label的内容和label的font为label设置frame,100为label的长度
    CGRect txRect = [label.text boundingRectWithSize:CGSizeMake(100, [UIScreen mainScreen].bounds.size.height*10) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:label.font} context:nil];
    label.frame=CGRectMake(10, 100, txRect.size.width, txRect.size.height);//重新为label设置frame

有时为了使文字的排版好看,需要用到一定的行距,时文字更加清晰

//如果是异步请求,请加上这几句,为label赋值为仅带有空格的字符串,可防止程序崩溃
     /*if(label.text.length==0){
        label.text=@" ";
    }*/
    //行距设置
    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:label.text];
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
    [paragraphStyle setLineSpacing:15];//行距的大小
    [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, label.text.length)];
    label.attributedText = attributedString;
    [label sizeToFit];

iOS开发交流群:301058503

猜你喜欢

转载自blog.csdn.net/liumude123/article/details/51405649