文档章节

UILabel自动计算行高 并且 最多显示n行

冰泪_
 冰泪_
发布于 2016/05/17 15:12
字数 446
阅读 2663
收藏 23

该段代码作用(iOS开发)

1、根据文本动态计算label需要的高度

2、可以添加最多显示多少行 

      例如:在论坛回复里边有“点击查看全文功能” 默认的最多只显示3行  点击查看全文时候 >显示全文   此类的 情况下 可以使用    

     此段代码算是动态计算label高度的升级版吧

//创建label
    NSString * labelStr = @"你好,这是UILabel的例如:在论坛回复里边有“点击查看全文功能” 默认的最多只显示3行  点击查看全文时候 >显示全文   此类的 情况下 可以使用  ";
    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 160, 200, 14)];
    label.font = [UIFont systemFontOfSize:11];
    label.backgroundColor = [UIColor orangeColor];
    label.text = labelStr;
    label.numberOfLines = 0;
    [self.view addSubview:label];

[self dynamicCalculationLabelHight:label];

------------  分割线  ------------------

- (void)dynamicCalculationLabelHight:(UILabel*) label{
    //有源码在 有需求自行微调即可
    NSInteger n = 6;//最多显示的行数
    CGSize labelSize = {0, 0};
    
    labelSize = [self  ZFYtextHeightFromTextString:label.text width:label.frame.size.width fontSize:label.font.pointSize];
    
   // NSLog(@"%f",label.font.pointSize);//获取 label的字体大小
    //NSLog(@"%f",label.font.lineHeight);//获取label的在不同字体下的时候所需要的行高
    //NSLog(@"%f",labelSize.height);//label计算行高

    CGFloat rate = label.font.lineHeight; //每一行需要的高度

    CGRect frame= label.frame;
    if (labelSize.height>rate*n) {
        frame.size.height = rate*n;
    }else{
        frame.size.height = labelSize.height;
    }
    label.frame = frame;
}

 

    //计算 label需要的宽度和高度方法

-(CGSize)ZFYtextHeightFromTextString:(NSString *)text width:(CGFloat)textWidth fontSize:(CGFloat)size{
    //计算 label需要的宽度和高度
    NSDictionary *dict = @{NSFontAttributeName:[UIFont systemFontOfSize:size]};
    CGRect rect = [text boundingRectWithSize:CGSizeMake(textWidth, MAXFLOAT) options:NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesFontLeading|NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil];
    
     CGSize size1 = [text sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:size]}];
    
    return CGSizeMake(size1.width, rect.size.height);
}

转载请注明出处http://my.oschina.net/u/2523541/blog/676724

如果感觉写的不错麻烦关注一下

对以上代码有疑问可以留言告诉我

 

© 著作权归作者所有

共有 人打赏支持
冰泪_
粉丝 13
博文 80
码字总数 51659
作品 0
青浦
程序员
加载中

评论(9)

杨志强
杨志强
额 这个算升级么?单纯计算frame啊……用的接口也是旧的啊……
冰泪_
冰泪_

引用来自“卖茄子”的评论

为什么不直接封装成控件。。

项目中使用到了就随手写了下 几行代码的事 也就懒得封装了
卖茄子
卖茄子
为什么不直接封装成控件。。
冰泪_
冰泪_

引用来自“Axel_”的评论

怎么还在首页推荐

这个不是很清楚 这个的机制
iiiiiiiii
iiiiiiiii
怎么还在首页推荐
冰泪_
冰泪_

引用来自“宇林木风”的评论

干啥用也不说明下,整理下格式吧,毕竟被置顶了~
好的 我整理下
冰泪_
冰泪_

引用来自“慢慢成长”的评论

代码没高亮1
我看看怎么高亮
宇林木风
干啥用也不说明下,整理下格式吧,毕竟被置顶了~
慢慢成长
慢慢成长
代码没高亮1
UILabel自适应高度和自动换行- OC swift

加粗; [UILabel setFont:[UIFont fontWithName:@"Helvetica-Bold" size:20]]; 加粗并且倾斜 [UILabel setFont:[UIFont fontWithName:@"Helvetica-BoldOblique" size:20]]; guessLikeLabel.f......

夕阳_jhe
2015/08/17
0
0
用UITextView撸一个顺畅的评论输入框

对比UITextField 继承关系: UITextField继承自UIControl,UITextView继承自UIScrollView; 输入行数 UITextView支持多行输入,可以滑屏垂直滚动,UITextField仅支持单行输入 Placeholder UI...

STzen
05/10
0
0
UILabel autolayout自动换行 版本区别

今天解决了一个与UILabel相关的Bug。 表现为在iOS7以上的系统中,UILabel能够自动换行,多行显示的字符串,而在iOS6上面则不会自动换行,直接打省略号。 正常情况下,numberOfLines设置为0,U...

Aimy
2014/12/04
0
0
UI_11 自定义UITableViewCell、Cell的高度自适应

UITableViewCell很难满足我们的需求,因此,CustomCell(自定义单元格)至关重要。下面将通过一个例子演示自定义Cell。第二部分演示根据文本内容自适应Label、Cell高度。 第一部分 CustomCe...

黑伞将军
2015/08/29
0
0
UIImageView与UIButton

应用场合 UIImageView主要用在只显示图片,没有点击事件的情况并且处理图片更加专业,动画例子: NSMutableArray *images = [NSMutableArray array]; for (int i=0; i<sum; i++) { NSBundle ...

天边那束阳光
2014/10/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

百度贴吧发送gif图片的限制

百度贴吧中不可以发送超过500k的gif图片,同时尺寸不能超过700个像素。

gugudu
29分钟前
1
0
eclipse中查找所有汉字

今天遇到需要对中文翻译为英文的情况,需要查找一下项目中出现的所有汉字。我们可以使用快捷键Ctrl+H,在搜索一栏输入:[^\x00-\xff],记得勾选正则表达式。 备注: [\x00-\xff] 是 0 - 255的...

hengbao5
31分钟前
2
0
HBase常用操作命令

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBase是Google Bigtable的开源实现,...

飓风2000
35分钟前
2
0
天创恒达TC TC6C0更新固件包

天创恒达TC TC6C0 升级完 登录密码 admin、000000

yizhichao
37分钟前
2
0
阿里云总裁胡晓明:“这些新杭州故事,明天将会在更多城市发生”

摘要: 9月19日,2018杭州·云栖大会现场,杭州城市大脑2.0正式发布,管辖范围扩大28倍,覆盖面积增至420平方公里,相当于65个西湖大小。 ET城市大脑等数字化城市解决方案,掀开了“杭州故事...

阿里云官方博客
38分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部