小胖说事33-----iOS给Lable字体添加行间距
2015-07-22 18:55
525 查看
引子:有的时候,当你用UILable加载一段话的时候,由于那些字可能会很多,系统的布局之后的字间距会很挤,但是,UI设计会要求你,把字于字的间距调大一些,这时候就要程序猿敲代码改变字体的间距。接下来就给出实现这种效果的代码。另外,我在使用的时候,加了行间距之后,用
- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options context:(NSStringDrawingContext *)context方法,居然算出来的高度不准确。所以接下来也会给出解决方案。在这里用到了我以前写到的富文本控件NSTextattachment,链接/article/1616125.html,大家可以去看看怎么实现图文混排的知识。
第一步:初始化一个UILable
第二步:初始化NSMutableParagraphStyle
第三步:也就是计算高度的一步
第四步:添加UILable,并输出lable的高度
在控制台打印的为:
补充:NSMutableParagraphStyle里边有很多的属性:
大家有什么不懂得或者需要想交流知识的,可以加顶部的QQ群,我在那里等你。。
- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options context:(NSStringDrawingContext *)context方法,居然算出来的高度不准确。所以接下来也会给出解决方案。在这里用到了我以前写到的富文本控件NSTextattachment,链接/article/1616125.html,大家可以去看看怎么实现图文混排的知识。
第一步:初始化一个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群,我在那里等你。。
相关文章推荐
- swfit中文学习
- 【直播预告】7月26日iOS免费公开课答疑第三期,有奖问答!
- iOS 图片相册调用封装
- iOS 敏捷开发,常用的宏
- iOS 倒计时NSTimer
- iOS —— 崩溃闪退日志
- ios初步修饰符简介
- iOS可持续化集成: Jenkins + bundler + cocoapods + shenzhen + fastlane + pgyer
- IOS开发多线程GCD的学习(二)
- iOS开发之多线程
- iOS—修改AFNetworking源文件可接收text/plain的方法
- iOS开发之蓝牙4.0 BLE开发
- iOS两个强制旋转屏幕的方法
- 【iOS开发系列】用简单工厂模式理解OC反射机制
- ios MVC
- ios 自定义cell中有textField,点击textField时,防止键盘挡住textField
- 构建 iOS 风格移动 Web 应用程序的8款开发框架
- 谈谈iOS7及以上版本navigationBar带来的坑
- IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)
- 《慕客网:IOS基础入门之Foundation框架初体验》学习笔记 <三> NSArray