文档章节

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

冰泪_
 冰泪_
发布于 2016/05/17 15:12
字数 446
阅读 2510
收藏 23
点赞 4
评论 9

该段代码作用(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
博文 68
码字总数 50702
作品 0
青浦
程序员
加载中

评论(9)

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

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

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

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

引用来自“Axel_”的评论

怎么还在首页推荐

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

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

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

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

代码没高亮1
我看看怎么高亮
宇林木风
干啥用也不说明下,整理下格式吧,毕竟被置顶了~
慢慢成长
慢慢成长
代码没高亮1
用UITextView撸一个顺畅的评论输入框

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

STzen ⋅ 05/10 ⋅ 0

【转载】NGUI UILabel 文字破碎

项目使用NGUI,最近碰到 Loading界面的提示文字破碎的Bug。 参考了以下文章 转自http://blog.csdn.net/huutu http://www.liveslives.com 下面先来了解一下为什么会出现这种问题。 需要了解的...

linda012518 ⋅ 05/09 ⋅ 0

蛇和梯子游戏,分别用oc和swift开发

蛇和梯子游戏,分别用oc和swift开发 心血来潮想学学swift,看了一下教程和开发文档,发现其实swift的很多类都是基于oc的,比如swift的UIButton是基于oc的UIButton。所以我想其实学过oc再学s...

weixin_42012181 ⋅ 04/18 ⋅ 0

Swift中优雅的为UIButton添加链式的Block点击事件

UIButton是基于 action - target 的事件机制处理点击事件的。通常,如果我们需要添加一个 UIButton 的点击事件的时候,一般会这么做: 当然,可能对于同一个 button 我们可能会添加不止一个状...

BennyLoo ⋅ 04/14 ⋅ 0

UIButton 背景色渐变动画

UIButton 背景色渐变动画 项目有个需求需要UIButton上的背景色是渐变动画的效果,如下。 实现 CAGradientLayer 用于实现渐变效果,CABasicAnimation用于对Layer做动画 源码:https://github.c...

qin_shi ⋅ 04/17 ⋅ 0

如何穿透TableView中的button滑动feeds流?

1. cell中的按钮如何透传滑动事件? tableviewcell中画了一个button,但是从button开始滑动tableview会失效,造成一定几率tableview无法滑动。 1.1. UIView+UIImageView+UILabel 实现UIButto...

zyq522376829 ⋅ 05/23 ⋅ 0

iOS关于换肤和夜间模式的一些思考

介绍 好久没写文章了,正好最近在研究换肤,所以将最近的心得和体会与大家分享一下。 iOS换肤的方式比较单一,查找了很多资料,发现主流的方式有如下两种: } 自己的想法 首先我们应该明确需...

shenglanya ⋅ 05/14 ⋅ 0

iOS XIB约束适配 || 字体 根据屏幕宽变化

简单实现XIB上的约束值,按照指定需求自动变化(根据屏幕宽度变化)。 基准图(750 * 1334)上控件距离左边为20 达到效果:5s(640 1136)上运行距离为 20(320/375.0) = 17.07; 6s(750 133...

ShouldChang ⋅ 05/22 ⋅ 0

经典Win95风格的iOS UI 组件集 ClassicKit

ClassicKit是 Windows 95 经典风格的iOS 开源UI 组件集。图标,窗框的资源都来自Windows 95。每个组件都像 UIKit 的对应组件一样使用,例如,CKButton 像 UIButton 一样响应手势事件。同时这...

marsdream ⋅ 05/21 ⋅ 0

iOS 端富文本控件 - NudeIn

NudeIn NudeIn 是一个基于 UITextView ,书写风格类似于 masonry 的 iOS 端富文本控件,它采用优雅的声明式方法定义富文本控件,和编程式的不同,它所需的代码量相当短,且非常直观易用。 Us...

HJ-CAI ⋅ 06/03 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部