zoukankan      html  css  js  c++  java
  • (转)iOS学习——UIlabel设置行间距和字间距

      在iOS开发中经常会用到UIlabel来展示一些文字性的内容,但是默认的文字排版会觉得有些挤,为了更美观也更易于阅读我们可以通过某些方法将UIlabel的行间距和字间距按照需要调节。

      比如一个Label的默认间距效果是这样:

    然后用一个封装起来的Category来调整这部分文字的行间距,其中5.0就是我自定义的文字间距:

    [UILabel changeLineSpaceForLabel:cell.describeLabel WithSpace:5.0];

    调整后的效果是这样的:

    这是一个UILabel 的Category,他的内部实现是这样的:

    UILabel+ChangeLineSpaceAndWordSpace.h

    #import <UIKit/UIKit.h>
    
    @interface UILabel (ChangeLineSpaceAndWordSpace)
    
    /**
     *  改变行间距
     */
    + (void)changeLineSpaceForLabel:(UILabel *)label WithSpace:(float)space;
    
    /**
     *  改变字间距
     */
    + (void)changeWordSpaceForLabel:(UILabel *)label WithSpace:(float)space;
    
    /**
     *  改变行间距和字间距
     */
    + (void)changeSpaceForLabel:(UILabel *)label withLineSpace:(float)lineSpace WordSpace:(float)wordSpace;
    
    @end

    UILabel+ChangeLineSpaceAndWordSpace.m

    #import "UILabel+ChangeLineSpaceAndWordSpace.h"
    
    @implementation UILabel (ChangeLineSpaceAndWordSpace)
    
    + (void)changeLineSpaceForLabel:(UILabel *)label WithSpace:(float)space {
        NSString *labelText = label.text;
        NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:labelText];
        NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
        [paragraphStyle setLineSpacing:space];
        [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [labelText length])];
        label.attributedText = attributedString;
        [label sizeToFit];
    }
    
    + (void)changeWordSpaceForLabel:(UILabel *)label WithSpace:(float)space {
        NSString *labelText = label.text;
        NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:labelText attributes:@{NSKernAttributeName:@(space)}];
        NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
        [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [labelText length])];
        label.attributedText = attributedString;
        [label sizeToFit];
    }
    
    + (void)changeSpaceForLabel:(UILabel *)label withLineSpace:(float)lineSpace WordSpace:(float)wordSpace {
        NSString *labelText = label.text;
        NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:labelText attributes:@{NSKernAttributeName:@(wordSpace)}];
        NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
        [paragraphStyle setLineSpacing:lineSpace];
        [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [labelText length])];
        label.attributedText = attributedString;
        [label sizeToFit];
    }
    
    @end
  • 相关阅读:
    【洛谷P1948】[USACO08JAN]电话线
    【洛谷P1967】[NOIP2013]货车运输
    【题解】洛谷P2926 [USACO08DEC]拍头Patting Heads
    【题解】洛谷P1495 曹冲养猪 (中国剩余定理)
    【题解】POJ1845 Sumdiv(乘法逆元+约数和)
    【题解】P1516 青蛙的约会(Exgcd)
    【数论】同余问题
    DP Cleaning Up 打扫卫生
    set+链表 【POJ Challenge】生日礼物
    并查集 [Scoi2010]游戏
  • 原文地址:https://www.cnblogs.com/mukekeheart/p/10215176.html
Copyright © 2011-2022 走看看