小胖说事33-----iOS给Lable字体添加行间距

引子:有的时候,当你用UILable加载一段话的时候,由于那些字可能会很多,系统的布局之后的字间距会很挤,但是,UI设计会要求你,把字于字的间距调大一些,这时候就要程序猿敲代码改变字体的间距。接下来就给出实现这种效果的代码。另外,我在使用的时候,加了行间距之后,用

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options context:(NSStringDrawingContext *)context方法,居然算出来的高度不准确。所以接下来也会给出解决方案。在这里用到了我以前写到的富文本控件NSTextattachment,链接http://blog.csdn.net/haogaoming123/article/details/46410359,大家可以去看看怎么实现图文混排的知识。


第一步:初始化一个UILable

UILabel *lable = [[UILabel alloc]initWithFrame:CGRectMake(0, 64, self.view.frame.size.width, 21)];
lable.numberOfLines = 0;


第二步:初始化NSMutableParagraphStyle
NSString *str = @"可以自己按照宽高,字体大小,来计算有多少行。。然后。。。每行画一个UILabel。。高度自己可以控制把这个写一个自定义的类。郝高明";
NSMutableAttributedString *attrit = [[NSMutableAttributedString alloc]initWithString:str];
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc]init];
style.lineSpacing = 5;  //设置文字行间距
[attrit addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0, [str length])];
lable.attributedText = attrit;


第三步:也就是计算高度的一步

[lable sizeToFit]; //系统自带的方法,可以自动将文字的高度布局到UILable上,这里计算有一个小问题,就是如果文字很少只有一行,则计算的宽度就会出现问题,欢迎大家加入顶部 QQ 群里一起交流解决方案。

第四步:添加UILable,并输出lable的高度

[self.view addSubview:lable];
NSLog(@"%@",NSStringFromCGRect(lable.frame));

在控制台打印的为:
2015-07-22 18:26:41.246 字体行间距[5410:209790] {{0, 64}, {34, 25.5}}

补充:NSMutableParagraphStyle里边有很多的属性:

style.lineSpacing = 10;//增加行高
style.headIndent = 10;//头部缩进,相当于左padding
style.tailIndent = -10;//相当于右padding
style.lineHeightMultiple = 1.5;//行间距是多少倍
style.alignment = NSTextAlignmentLeft;//对齐方式
style.firstLineHeadIndent = 20;//首行头缩进
style.paragraphSpacing = 10;//段落后面的间距
style.paragraphSpacingBefore = 20;//段落之前的间距

大家有什么不懂得或者需要想交流知识的,可以加顶部的QQ群,我在那里等你。。



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值