UILabel设置行间距同时要计算得到行高的最简单的方法
来源:互联网 发布:域名服务器机型 编辑:程序博客网 时间:2024/06/07 23:39
UILabel计算行高有两个方法,一个是
一个是
<span style="color:#330033;">sizeWithFont: forWidth: lineBreakMode: </span>
一个是
boundingRectWithSize: options: attributes: context:这两个都是NSString的对象方法,根据传入的文字,字体,得到最后的适合的size。
但是遇到label需要在其中设置行间距的情况下,就需要设置label的attributedText了,但是NSAttributedString是没有上述两个方法的,这个时候应该怎么得到设置了行间距的label的高度呢?
这个时候就能用到sizeToFit方法了,设置了label对象的attributedText后,再使用sizeToFit就能得到一个适合size的label,这时候直接获取label的宽高,随便~~~
以下是我写的一个对象方法,当然也可以使用类方法,只是看需要在哪里创建而已,如果随时会改变对象的很多属性的话,推荐使用对象方法,便于控制内存,如果只有那么一次,可以用类方法。
/** * 将一个已经初始化的label设置行间距等属性后,返回一个适合大小的label * * @param text label的文字 * @param x label的x * @param y label的y * @param maxWidth label的最大宽度 * @param fontSize label的文字大小 * @param lineSpace label的行间距 */- (void)getLineSpacingLabelWithString:(NSString *)text X:(CGFloat)x Y:(CGFloat)y Width:(CGFloat)maxWidth Font:(CGFloat)fontSize LineSpace:(CGFloat)lineSpace{ // 设置label的属性 self.numberOfLines = 0; self.lineBreakMode = NSLineBreakByWordWrapping; // 必须设置字体的 self.font = [UIFont systemFontOfSize:fontSize]; // 下面一句特别注意,我在这里就犯错了,计算出来的高度完全没有问题,新建一个项目,出来的size刚好完美的装着这个label,但是在本项目就是显示不完全,找了好久才找到问题的原因,下面这句话是修改字体的,每个项目都可能修改系统字体为自定义的字体,如果不在sizeToFit之前把字体改回来的话,最后得到的size就是按照系统字体计算出来的size,最后你改了字体,就会导致label的文字显示不完或者有多余的空白。 [Utils setFontFamily:appDelegate.customFontName forView:self andSubViews:YES]; // 根据内容设置label的大小,先设置初始的x,y,width self.frame = CGRectMake(x, y, maxWidth, 0); // 设置label的行间距 NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:text]; NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; // 行间距为 [paragraphStyle setLineSpacing:lineSpace]; // 设置文字属性的范围 [attributeString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [text length])]; // 将attributeString赋值给label的attributedText self.attributedText = attributeString; // 最关键的一步,之后就获取高度就直接用 label.bounds.size.width [self sizeToFit];}
1 0
- UILabel设置行间距同时要计算得到行高的最简单的方法
- 设置 UILabel的行间距的方法
- 设置UILabel的行间距
- UIlabel 行间距的设置
- UILabel 设置行间距 && 自动计算text 的frame
- 如果设置UILabel的行间距
- iOS设置UILabel的行间距
- 设置UITextView和UILabel的行间距
- UILabel的行间距
- UILabel的行间距
- UILabel的行间距
- 调节UILabel的行间距
- iOS UILabel的行间距
- 调整UILabel的行间距
- UILabel 设置行间距
- UILabel设置行间距
- UILabel设置行间距
- 设置行间距,计算带行间距的文本高度
- 自定义JSP中的Taglib标签之四自定义标签中的Function函数
- cocos2d移植到安卓引入第三方so文件时候编译会删除解决方案
- C语言 指针(上)
- Android进程线程之同步互斥(一)
- 设计模式之简单工厂模式
- UILabel设置行间距同时要计算得到行高的最简单的方法
- 图像处理、模式识别、模式分类、机器视觉推荐图书汇总
- google Map的总结
- Context与Activity/Service/Application
- 自定义JSP中的Taglib标签之五自定义标签之SimpleTagSupport使用
- XCode 7.2 下安装Alcatraz
- Shell CGI
- ios手势识别(敲击,捏合,拖拽,轻扫,旋转,长按)
- jQuery之ajax编程