设置UILable中的行间距和字间距以及自适应高度,段落首行挤进


先上一张效果图:

设置UILable中的行间距和字间距以及自适应高度,段落首行挤进_第1张图片

/****   代码展示   ****/

/**以下方法的参数

 *1.内容
 *2.字体(这里直接给大小)
 *3.label的宽高
 *4.行间距
 *5.字间距
 */

-(CGSize)FontHeightsizeWithText:(NSString *)text TextFont:(UIFont *)font TextMaxSize:(CGSize)size LineSpace:(CGFloat)linespace Wordpace:(CGFloat)wordpace{
    //可变的属性文本
    NSMutableAttributedString *attributedText=[[NSMutableAttributedString alloc]initWithString:text attributes:@{NSKernAttributeName:@(wordpace)}];
    //设置段落样式
    NSMutableParagraphStyle *paragraphStyle=[[NSMutableParagraphStyle alloc]init];
    paragraphStyle.firstLineHeadIndent=20;
//每行段落首行挤进20单位
    paragraphStyle.alignment = NSTextAlignmentLeft;
    paragraphStyle.maximumLineHeight =30;
//设置最大的行高
    paragraphStyle.lineSpacing=linespace;//自定义行间距的高度
    //给可变的属性字符串 添加段落格式
    [attributedText addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [text length])];
    //将带有段落格式的可变的属性字符串给lable.attributedText
    self.contentLabel.attributedText = attributedText;
    self.contentLabel.lineBreakMode = NSLineBreakByTruncatingTail;//label换行模式
    self.contentLabel.numberOfLines=0;
    CGSize maxSize=size;
    [self.contentLabel sizeToFit];
    CGSize labelSize =[self.contentLabel sizeThatFits:maxSize];
    
    return labelSize;
}

然后直接调用方法就行啦

代码展示:

//内容长度(我的是用XIB把label的高度拉成属性)
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *contentHeight;

   //新闻内容的高度(label的高度)

NSString *str=@"你的内容";

    self.contentHeight.constant =[self FontHeightsizeWithText:str TextFont:[UIFont systemFontOfSize:15] TextMaxSize:CGSizeMake(kScreenWidth-20, 30) LineSpace:8 Wordpace:1].height;
   
完毕!!!!

就这么几行代码我就不给demo啦,


你可能感兴趣的:(OC)