你的位置:首页 > 操作系统

[操作系统]ios 根据文字数量计算UILabel高度


     以前封装过多个关于实现此功能的方法,虽然都实现了效果,但代码和实现思路都相对复杂很多,而且并不比我下面要说的这个方法好,这个也是我今天突发奇想来的,测量一下字体的宽度,然后根据这个点来计算 UILabel高度。这里我使用的FontSize是13,我测出它的高度、宽度都是15像素,如果你使用其他号字体,需要自己从新测下字体宽度、高度,下面贴出代码。

一、实现代码

  //申明时的label的高度可以随便设置,因为之后计算出高度后还需要从设置一次  UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(10, 0, DEVICE_Width-20, 150)];  label.text = @"《蛮荒记》的故事展开:大荒586年, 神农化羽,神帝之位悬空,引发金、木、水、火、土五族大战。神农传人拓跋野与义弟蚩尤联合对抗侵略者,双军交锋,大地却在战场中央裂开,封印太古凶魔的皮母地丘重现人间,混沌一出,天下将亡。这版概念海报一经曝光,立刻引发不少网友围观。 2015年的影视圈,掀起了网络文学改编IP的热潮:根据《盗墓笔记》、《鬼吹灯》等热门IP改编的多部电视剧、电影相继上映。2016年伊始,阿里影业也放“大招”,正式宣布《蛮荒记》这一IP也将搬上大银幕。  据《蛮荒记》项目制片人夏天尘介绍,电影《蛮荒记》将是一个类似魔兽世界“艾泽拉斯大陆”的东方上古世界观,“如果一定要做直观的类比,艾泽拉斯大陆讲巨魔、精灵、土灵、矮人、侏儒,我们讲天下诸帝、五大圣女、大荒十神、大荒十大妖女,以《山海经》为蓝本,故事情节取材并贯通华夏传说,将全新的上古世界搬上大银幕。电影的视觉审美和世界观塑造都将打破中国人传统认知,让观众感觉熟悉却又颠覆。";   label.backgroundColor = [UIColor redColor];  label.textColor = [UIColor whiteColor];  label.textAlignment = NSTextAlignmentCenter;  label.lineBreakMode = NSLineBreakByWordWrapping;  label.font=[UIFont systemFontOfSize:13];  //下面/15这里的15就是13号字体的宽度,这里是用label的宽度/15(单个字体的宽度)计算出这个label的宽度每行能放多少个汉字  int WordCount=label.frame.size.width/15;  //下面是使用字体的长度(就是字体的个数)/上面计算出的每行存放字体的个数,算出一共有多少行  CGFloat heightCount= label.text.length/WordCount;  //heightCount*15 下面我们就是通过上一步计算出的 行数*字体的高度,计算出label最终的展示高度  [label setFrame:CGRectMake(label.frame.origin.x, 0, label.frame.size.width,heightCount*15 )];  label.numberOfLines = 0;   [self addSubview:label];

二、下面是效果截图(因为iphone4和IPHONE5的宽度是一样的所以效果没出入)