zoukankan      html  css  js  c++  java
  • 修改UILabel的行间距

    在iOS开发中  有时候为了调整一些UI效果  我们需要调整UILabel之间的行间距:

    contentLabel.text:label上显示的文字内容;

    5:label行间距;

    contentLabel:需要设置行间距的label

    contentTextFont:字体大小;

    contentLabelW:label的宽度

    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:contentLabel.text];;
                NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
                [paragraphStyle setLineSpacing:5];
                [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, contentLabel.text.length)];
                
                contentLabel.attributedText = attributedString;
                

    //调节高度(在计算label的高度的时候需要注意 因为行间距变化了 不再是系统默认的行间距了 所以在计算的时候要根据实际的行间距去调整)
        CGSize contentTextSize = [self sizeOfText:contentLabel.text WithFont:contentTextFont maxSize:CGSizeMake(contentLabelW, CGFLOAT_MAX)];
        CGSize size = [contentlabel.text sizeWithFont:contentTextFont];
        int length = size.height;
        int colomNumber = contentTextSize.height/length;
    //contentLabelH 就是label的实际高度 CGFloat contentLabelH
    = contentTextSize.height+colomNumber*5;
                //CGSize size = CGSizeMake(width, 500000);
                
                //CGSize labelSize = [contentLabel sizeThatFits:size];

    高度计算思路:

    首先要计算label的高度(这个高度是按照系统方法计算的  所以间距也是系统默认的间距  很小的)  然后计算label中每行文字对应的高度  然后label高度除以文字的高度就是label行数  

    当我们知道label的行数是 也知道了行间距 

    那么label的实际高度就是label的高度(这个高度是按照系统方法计算的  所以间距也是系统默认的间距  很小的)加上(行数*间距)

    PS:这个计算方法不是很好  忽略了系统默认的间距 虽然默认的间距很小 但是忽略的话也会给实际尺寸的计算带来较大误差  另外计算也比较麻烦  我觉得应该还有更简单更方便的方法  只是一时没想到  如果有知道更好方法的小伙伴 请联系我!

  • 相关阅读:
    CSS3中的结构伪元素选择器和伪类选择器的使用
    ul li居中
    vue 点击按钮,边框变色
    vue 实现简单的遮罩层
    Vue 控制鼠标移入移出事件文字的隐藏和显示
    vue 文字点击变色
    vue v-for的用法
    使用CSS修改radio样式
    vue 点击显示隐藏,鼠标移动上去显示隐藏
    sql序列(3)基本语法
  • 原文地址:https://www.cnblogs.com/gaoxiaoniu/p/5308077.html
Copyright © 2011-2022 走看看