iOS 中Label在自适应宽高的同时设置文字行距行距

一、第一步

直接封装成类别,只要是UILabel都可以实现在自适应宽高的同时调整文字的行高。具体的实现代码如下:

- 创建类别,将其命名为Adaptive
- .h文件的方法接口
#import <UIKit/UIKit.h>
@interface UILabel (Adaptive)
/*
* 
* 自适应宽高同时调整行距 @param text label.text 
* @param font label.font 
* @param size label的最大尺寸 * 
* @return 自适应后的到的size 
*/- (CGSize )szieAdaptiveWithText:(NSString *)text andTextFont:      (UIFont *)font andTextMaxSzie:(CGSize )size;@end
  • .m文件中方法的实现
    #import "UILabel+Adaptive.h"
    @implementation UILabel (Adaptive)
    - (CGSize )szieAdaptiveWithText:(NSString *)text andTextFont:(UIFont *)font andTextMaxSzie:(CGSize )size{
    self.text = text; self.font = font;
    //可变的属性文本
    NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc]initWithString:self.text];
    //设置段落样式 使用
    NSMutableParagraphStyle类 NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    paragraphStyle.alignment = NSTextAlignmentLeft//文本对齐方式
    paragraphStyle.maximumLineHeight = 60; //最大的行高
    paragraphStyle.lineSpacing = 8; //行自定义行高度
    // 给可变的属性字符串 添加段落格式
    [attributedText addAttribute: NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [self.text length])];
    //将带有段落格式的可变的属性字符串给label.attributedText
    self.attributedText = attributedText;
    self.lineBreakMode = NSLineBreakByTruncatingTail;//label的换行模式
    self.numberOfLines = 0;// 设置行数,0表示没有限制
    CGSize maxSzie = size;//设置label的最大SIZE
    [self sizeToFit]; CGSize labelSize = [self sizeThatFits:maxSzie];
    //最终自适应得到的label的尺寸。
    return labelSize;}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容