在iOS開(kāi)發(fā)中經(jīng)常會(huì)用到UIlabel來(lái)展示一些文字性的內(nèi)容逸贾,但是默認(rèn)的文字排版會(huì)覺(jué)得有些擠次询,為了更美觀也更易于閱讀我們可以通過(guò)某些方法將UIlabel的行間距和字間距按照需要調(diào)節(jié)健芭。
比如一個(gè)Label的默認(rèn)間距效果是這樣:
然后用一個(gè)封裝起來(lái)的Category來(lái)調(diào)整這部分文字的行間
[UILabel changeLineSpaceForLabel:cell.describeLabel WithSpace:5.0];
調(diào)整后的效果是這樣的:
其中5.0就是我自定義的文字間距摸柄。
這是一個(gè)UILabel 的Category叹卷,他的內(nèi)部實(shí)現(xiàn)是這樣的:
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
根據(jù)內(nèi)部實(shí)現(xiàn)也可以自己靈活運(yùn)用 不一定用Category的方法舒岸。