iOS开发小知识之改变UIlabel的行间距和字间距

来源:互联网 发布:粤数大数据公司 评价 编辑:程序博客网 时间:2024/05/17 06:13

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

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


然后用一个封装起来的Category来调整这部分文字的行间

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

调整后的效果是这样的:


其中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

根据内部实现也可以自己灵活运用 不一定用Category的方法。



作者:Elephan_z
链接:http://www.jianshu.com/p/b7a2314e780a
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。