iOS开发小知识之改变UIlabel的行间距和字间距
2017-01-04 00:00
309 查看
在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开发小知识之改变UIlabel的行间距和字间距
- iOS开发小知识之改变UIlabel的行间距和字间距
- iOS 当UILabel多行时,改变文本的行间距
- iOS开发1-UILabel设置行间距和字间距
- iOS开发调整UILabel的行间距
- iOS UIlabel文字排版(改变字间距行间距)分类
- IOS开发入门基本知识——(UIButton UIView UILabel的创建)
- iOS开发技巧之:UILabel设置行间距和字间距并计算高度
- ios开发之 改变文本行间距和字符间距
- IOS开发入门基本知识——实现小猫招呼UIView UILabel UIButton NSTimer层级关系
- IOS开发调整UILabel的行间距
- iOS开发:关于UILabel、UIButton、UITextField文字下划线的设置方法(涉及到富文本的知识)
- 【iOS-Cocos2d游戏开发之二十】精灵的基础知识点总汇(位图操作/贴图更换/重排z轴等)及制作简单遮盖层!
- ios开发小知识2(转自cc)
- IOS开发:关于UILabel阴影设置的问题
- ios开发小知识3
- [iOS开发必备知识之] Category & Protocol
- ios 开发相关的证书和授权文件 知识介绍
- IOS开发学习笔记(1)-----UILabel 详解(原创)