iOS开发小知识之改变UIlabel的行间距和字间距
2017-08-23 14:20
435 查看
在iOS开发中经常会用到UIlabel来展示一些文字性的内容,但是默认的文字排版会觉得有些挤,为了更美观也更易于阅读我们可以通过某些方法将UIlabel的行间距和字间距按照需要调节。
比如一个Label的默认间距效果是这样:
然后用一个封装起来的Category来调整这部分文字的行间
调整后的效果是这样的:
其中5.0就是我自定义的文字间距。
这是一个UILabel 的Category,他的内部实现是这样的:
UILabel+ChangeLineSpaceAndWordSpace.h
UILabel+ChangeLineSpaceAndWordSpace.m
根据内部实现也可以自己灵活运用 不一定用Category的方法。
注意:要先赋值然后再进行设置间距,不然容易错误
比如一个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的方法。
注意:要先赋值然后再进行设置间距,不然容易错误
相关文章推荐
- iOS开发小知识之改变UIlabel的行间距和字间距
- iOS开发小知识之改变UIlabel的行间距和字间距
- iOS开发技巧之:UILabel设置行间距和字间距并计算高度
- IOS开发入门基本知识——(UIButton UIView UILabel的创建)
- iOS开发:关于UILabel、UIButton、UITextField文字下划线的设置方法(涉及到富文本的知识)
- iOS开发调整UILabel的行间距
- iOS UIlabel文字排版(改变字间距行间距)分类
- iOS 当UILabel多行时,改变文本的行间距
- iOS开发1-UILabel设置行间距和字间距
- ios开发之 改变文本行间距和字符间距
- IOS开发调整UILabel的行间距
- IOS开发入门基本知识——实现小猫招呼UIView UILabel UIButton NSTimer层级关系
- iOS蓝牙开发(一):蓝牙相关基础知识
- 【iOS知识学习】_iOS动态改变TableView Cell高度
- iOS开发xib控件删不掉,修改xib运行不发生改变,修改xib不管用
- iOS开发:接触IOS的第一个组件UILabel (常用属性)
- iOS开发知识与能力体系 思维导图
- iOS开发之控件frame/bounds/center尺寸快速赋值改变小技巧-简单给UIView新增分类
- ios方便的开发模式: Xcode调试、UIlabel、view控件等
- iOS开发笔记-cell里点击按钮展开收起-动态改变cell行高