美文网首页
iOS-UILabel相关<改变行间距、字间距、获取内容高度>

iOS-UILabel相关<改变行间距、字间距、获取内容高度>

作者: Xange | 来源:发表于2020-06-01 21:47 被阅读0次

修改UILabel的行间距、字间距、获取内容显示高度、快速创建UILabel

创建UILabel类

.h文件

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interfaceUILabel(Category)

/// 快速创建label

/// @param frame设置label的frame

/// @paramtext 显示内容

/// @param textColor 文字颜色

/// @param font文字字体及大小

/// @param alignment内容对其方式<0/1/2>

+ (instancetype)initWithFrame:(CGRect)frame

                         text:(NSString*)text

                    textColor:(UIColor*)textColor

                         font:(UIFont*)font

                    alignment:(NSInteger)alignment;

/// 计算label的内容显示的高度

/// @param label需要计算的label

+ (CGFloat)calculateHeightForLabel:(UILabel *)label;

/// 改变label的行间距

/// @param label需要改变的label

/// @paramspace 行间距

+ (void)changeLineSpaceForLabel:(UILabel *)label

                      withSpace:(CGFloat)space;

/// 改变label的字间距

/// @param label需要改变的label

/// @paramspace 字间距

+ (void)changeWordSpaceForLabel:(UILabel *)label

                      withSpace:(CGFloat)space;

/// 改变label的行间距、字间距

/// @param label需要改变的label

/// @param lineSpace 行间距

/// @param wordSpace 字间距

+ (void)changeSpaceForLabel:(UILabel *)label

              withLineSpace:(CGFloat)lineSpace

              withWordSpace:(CGFloat)wordSpace;

/// 改变label某位置的字体颜色

/// @param label需要改变的label

/// @paramcolor 颜色

/// @paramrange 位置

+ (void)changeTextColorForLabel:(UILabel *)label

                          color:(UIColor*)color

                          range:(NSRange)range;

@end

NS_ASSUME_NONNULL_END


.m文件

#import "UILabel+Category.h"

@implementation UILabel (Category)

/// 快速创建label

/// @param frame设置label的frame

/// @paramtext 显示内容

/// @param textColor 文字颜色

/// @param font文字字体及大小

/// @param alignment内容对其方式<0/1/2>

+ (instancetype)initWithFrame:(CGRect)frame

                         text:(NSString*)text

                    textColor:(UIColor*)textColor

                         font:(UIFont*)font

                    alignment:(NSInteger)alignment {

    UILabel*label = [[UILabel alloc]initWithFrame:frame];

    label.text= text;

    if(textColor !=nil) {

        label.textColor= textColor;

    }

    //默认使用系统字体

    label.font= font;

    //默认自动换行

    label.numberOfLines=0;

    label.textAlignment= alignment;

    //默认使用尾部省略

    label.lineBreakMode = NSLineBreakByTruncatingTail;

    return label;

}

/// 计算label的内容显示的高度

/// @param label需要计算的label

+ (CGFloat)calculateHeightForLabel:(UILabel *)label {

    CGRect rect = [label.text boundingRectWithSize:CGSizeMake(label.frame.size.width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:label.font} context:nil];

    return rect.size.height;

}

/// 改变label的行间距

/// @param label需要改变的label

/// @paramspace 行间距

+ (void)changeLineSpaceForLabel:(UILabel *)label

                      withSpace:(CGFloat)space {

    NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:label.text];

    NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];

    [stylesetLineSpacing:space];

    [attraddAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0, label.text.length)];

    label.attributedText= attr;

    [label sizeToFit];

}

/// 改变label的字间距

/// @param label需要改变的label

/// @paramspace 字间距

+ (void)changeWordSpaceForLabel:(UILabel *)label

                      withSpace:(CGFloat)space {

    NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:label.text attributes:@{NSKernAttributeName:@(space)}];

    NSParagraphStyle *style = [[NSParagraphStyle alloc] init];

    [attr addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0, label.text.length)];

    label.attributedText= attr;

    [label sizeToFit];

}

/// 改变label的行间距、字间距

/// @param label需要改变的label

/// @param lineSpace 行间距

/// @param wordSpace 字间距

+ (void)changeSpaceForLabel:(UILabel *)label

              withLineSpace:(CGFloat)lineSpace

              withWordSpace:(CGFloat)wordSpace {

    NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:label.text attributes:@{NSKernAttributeName:@(wordSpace)}];

    NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];

    [stylesetLineSpacing:lineSpace];

    [attr addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0, label.text.length)];

    label.attributedText= attr;

    [label sizeToFit];

}

/// 改变label某位置的字体颜色

/// @param label需要改变的label

/// @paramcolor 颜色

/// @paramrange 位置

+ (void)changeTextColorForLabel:(UILabel *)label

                          color:(UIColor*)color

                          range:(NSRange)range {

    NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:label.text];

    [attraddAttribute:NSForegroundColorAttributeName value:color range:range];

    label.attributedText= attr;

}

@end

相关文章

网友评论

      本文标题:iOS-UILabel相关<改变行间距、字间距、获取内容高度>

      本文链接:https://www.haomeiwen.com/subject/nfjezhtx.html