(转)iOS学习——UIlabel设置行间距和字间距

摘要:
在iOS开发中,UIlabel通常用于显示一些文本内容,但默认的文本布局会感觉有点拥挤。为了使它更美观、更容易阅读,我们可以通过一些方法根据需要调整UIlabel的行距和单词间距。

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

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

(转)iOS学习——UIlabel设置行间距和字间距第1张

然后用一个封装起来的Category来调整这部分文字的行间距,其中5.0就是我自定义的文字间距:

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

调整后的效果是这样的:

(转)iOS学习——UIlabel设置行间距和字间距第2张

这是一个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

免责声明:文章转载自《(转)iOS学习——UIlabel设置行间距和字间距》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇通知栏Notification的整理C# 形参中有默认值下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【Swift】UILabel的简单操作方法

@IBActionfuncbuttonClick_LabelCtrl(sender: AnyObject) { //定义CGRect来初始化UILable varframe: CGRect= CGRect(x: 50, y: 50, 200, height: 200) varlabel: UILabel= UILabel(frame: frame) //获...

设置textView或者label的行间距方法

一,效果图。 二,代码。 1 RootViewController.m 2 3 4 5 - (void)viewDidLoad 6 7 { 8 9 [super viewDidLoad]; 10 11 //Do any additional setup after loading the view. 12...

[转]UILabel自适应大小

当内容不足以将整个Label占满的时候,可以将Label中的内容顶部对齐显示,并自适应大小。 1、给myLabel标签内填充文本 Ios代码 myLabel.text=@"thetextwillfillthelabel"; 2、设置myLabel的最大显示行数(0表示不限) Ios代码 myLabel.numberOfLines=0; 3、设置...

iOS UIPickerView 可能会出现选中行不显示或者去掉上下两条横线的问题解决,

                       这个问题很容易解决,需要在pickerview的代理方法中设置上下横线的颜色就可以了                                                                                                                  ...

UILabel的顶对齐解决方法

对于有多行文字的UILabel而言,需要设置UILabel的numberoflines属性,此属性默认是1,也就是只显示一行,多余的会以尾部,中间的方式进行截断,具体要看你的初始设置。 在这里可以将其设置为numberoflines=0, 不限制label的行数,以实际文字数来确定行数。但是在解决行数后,又发现文字会上下居中对齐,而我是要顶对齐,解决此问...

UI小综合+跳转

效果图 在storyborad中添加的视图Navigation Controller(把table view的Content设为Static Cells),View Controller(+scroll view), 文件: 在BIDViewController.h // //BIDViewController.h //scrollView // /...