iOS UIlabel文字排版(改变字间距行间距)分类
2016-11-10 17:51
441 查看
在iOS开发中经常会用到UIlabel来展示一些文字性的内容,但是默认的文字排版会觉得有些挤,为了更美观也更易于阅读我们可以通过某些方法将UIlabel的行间距和字间距按照需要调节。
比如一个Label的默认间距效果是这样:
然后用一个封装起来的Category来调整这部分文字的行间
调整后的效果是这样的:
其中5.0就是我自定义的文字间距。
这是一个UILabel 的Category,他的内部实现是这样的:
UILabel+ChangeLineSpaceAndWordSpace.h
UILabel+ChangeLineSpaceAndWordSpace.m
根据内部实现也可以自己灵活运用 不一定用Category的方法。
文/Elephan_z(简书作者)
原文链接:http://www.jianshu.com/p/b7a2314e780a
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
比如一个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
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
相关文章推荐
- IOS UITabBar+UINavigation(改变背景/标题文字颜色、状态图片、tabbar选中方形背景、item间距)
- iOS UILabel显示文字设置不同的颜色以及行间距
- iOS - UILabel设置行间距及文字居中
- iOS 当UILabel多行时,改变文本的行间距
- iOS开发小知识之改变UIlabel的行间距和字间距
- iOS开发小知识之改变UIlabel的行间距和字间距
- iOS开发小知识之改变UIlabel的行间距和字间距
- [转]关于UILabel UITextView UIWebView 行间距 文字排版
- IOS利用Core Text对文字进行排版
- IOS利用Core Text对文字进行排版
- IOS 改变文字输入框背景
- IOS UILabel调整行高间距(利用iOS 6的特性来手动调整行间矩)
- IOS利用Core Text对文字进行排版
- iOS开发之UIlabel多行文字自动换行 (自动折行)
- [iOS]UILabel改变某个范围的字符颜色和字体
- IOS利用Core Text对文字进行排版
- IOS UILabel自适应里面的文字,自动调整宽度和高度的
- iOS&nbsp;UIlabel&nbsp;自动换行,文字自适应
- IOS控件:计算文字长度(UITextField,UILabel对象 和 IBAction)
- IOS UILabel 的使用及文字效果