* 业务需求是是这样的,需要我们在一段文本后面添加 展开 展开后文本是多少就显示多少。
顶顶顶顶顶顶顶顶顶顶的大多数是是是是
谁谁谁水水水水是是是是是...查看更多
顶顶顶顶顶顶顶顶顶顶的大多数是是是是
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
谁谁谁水水水水是是是是是是是是是是撒
大多数是山东省撒打算打算打算打算的收
水电费第三方第三方说的发送到发送到范
水电费第三方士大夫士大夫。

实现思路:

1.计算两行文本可以显示文本的个数

2.截取字符串

3.拼接字符( ... 和 查看更多)两个都拼接上去

4.给查看更多文本(富文本)添加事件

问题:主要问题在于 思路1

如何知道两行文本可以显示多少个字数,而且文本可能有标点,数字、英文、中文  它们的宽度是不一致的。

意思就是:两行文本可以显示的个数 是根据具体需要显示文本内容来决定的。

上代码  使用到 coreText 框架

CTFramesetterCreateFrame(framesetter,CFRangeMake(0,0), bezierPath.CGPath,NULL);

/** 返回两行文本的range */- (NSRange)getTwoTextRangeWith:(NSString *)string {    NSMutableDictionary * attributes = [NSMutableDictionary dictionaryWithCapacity:5];    UIFont * font = [UIFont systemFontOfSize:14.0];    [attributes setValue:font forKey:NSFontAttributeName];

    NSAttributedString * attributedString = [[NSAttributedString alloc] initWithString:string/*需要分页的字符串*/ attributes:attributes];    CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef) attributedString);    UIBezierPath * bezierPath = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, App_Frame_Width - 16, 42)];      CTFrameRef frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), bezierPath.CGPath, NULL);    CFRange range = CTFrameGetVisibleStringRange(frame);    CFRelease(frame);    CFRelease(framesetter);

    NSRange rg = NSMakeRange(range.location, range.length);    return rg;}

后面的工作就自己截取字符串了。

iOS 文本处理 ----- 两行文本后面添加 ... 查看更多相关推荐

  1. 文本溢出显示省略号时展示‘查看更多’按钮

    问题: 元素宽度100%,宽度会随着浏览器缩放而变化.元素内文本超过4行时显示省略号,同时展示'更多'按钮,点击更多按钮展示全部文本.如下图所示 分析: 文本超出4行显示省略号可以通过display ...

  2. 原生JS实现点击查看更多

    评论区点击查看更多功能的实现 思路: 对内容的高度进行判断,如果内容的高度大于设定的值,将内容的高度设定为固定值,同时将'查看更多'的节点上树.实现还是挺简单的,直接看代码. <!DOCTYPE ...

  3. Vue2.0 组件文本超出3行显示... 点击查看更多可以查看全部内容(展开收起)

    效果 <template><div ref="txttype" class="bottom"><div :class=" ...

  4. python可视化添加文本_python Matplotlib基础--如何添加文本和标注

    创建一个优秀的可视化图表的关键在于引导读者,让他们能理解图表所讲述的故事.在一些情况下,这个故事可以通过纯图像的方式表达,不需要额外添加文字,但是在另外一些情况中,图表需要文字的提示和标签才能将故事讲 ...

  5. CSS文本超过两行用省略号代替(兼容所有浏览器)

    CSS文本超过两行用省略号代替 方法一:常规写法(只兼容Chrome内核浏览器) 方法二:可以兼容所有浏览器的方式( js + CSS实现 ) 方法三:可以兼容所有浏览器的方式( 纯CSS实现 ) 方 ...

  6. NLP-文本处理:基本技术【命名实体识别、分词、拼写纠错、停用词、词性标注】、文本序列化、文本向量化、文本语料的数据分析、文本特征处理(Ngram特征添加、文本长度规范)、数据增强

    分词(tokenization):英文通过空格或者标点符号,就可以将词分开:而中文的分词会涉及很多问题(未登录词问题.分词歧义问题.分词不一致问题),所以会有各种不同分词的算法. 清洗:我们需要对文本 ...

  7. 手机直播app制作时怎样在iOS中实现富文本

    我们在观看直播时,经常会看到有的主播房间名字下面带有话题小标签,比如#搞笑的一天##悲伤的瞬间##双十一买了点啥#等,虽然看起来是很小的一个功能,但是在进行手机直播app制作时,在iOS中通过富文本的 ...

  8. 微信小程序文本查看更多和收起

    微信小程序文本查看更多和收起 微信小程序中,有时候文本需要实现这样的功能: 1.文本超过n行显示省略号 2.省略时,显示 展开/收起 按钮 3.文本不超过n行时,不显示省略号和展开/收起按钮 实现功能 ...

  9. 14、iOS里面的富文本

    iOS里面的富文本 1.NSAttributedString属性概览表 2.属性详解及应用 2.1 NSAttributedString.Key.font --字体大小 2.2 NSAttribute ...

最新文章

  1. 分布式缓存灵魂十连,你能坚持几个?
  2. 数据库期末复习样卷,临时抱佛脚高分通过考试
  3. contains java_Java CopyOnWriteArraySet contains()用法及代码示例
  4. Python爬虫的框架有哪些?推荐这五个!
  5. html树状图右侧_树状图及制作方法(Excel 2016/Excel 2013)
  6. 带有Swagger的Spring Rest API –集成和配置
  7. 【CodeForces - 227A】Where do I Turn? (计算几何,叉积判断直线拐向)
  8. 求1~n这n个整数十进制表示中1出现的次数
  9. Win32窗体应用程序如何添加资源文件?
  10. 以太网共同发明者去世,享年71岁
  11. ios - 带动画圆形旋转的进度条
  12. 【天梯选拔月赛】参与者人数(并查集模版题!remember find_father写法!)
  13. 数据库软件access mysql对比_access数据库软件优缺点对比
  14. 中国物联网、物联网卡进入蓬勃发展阶段
  15. 2019.7月面试题总结(三)
  16. beyong compare激活
  17. java校内报纸实验报告_第六周Java实验报告四
  18. 坚定信念,雨后终会见彩虹
  19. 【读书笔记】第1章“自律100天”的华丽开启
  20. 【异常记录】C# 连接数据库错误异常解决 err:40

热门文章

  1. 下载Python类库Server Error 404 - File
  2. 回收宝获阿里巴巴C1轮战略投资,二手回收“强者恒强”格局已定
  3. vue+django前后端分离之hippo前端初始化(npm vue-cli)
  4. 【LEDE】树莓派上玩LEDE终极指南-81-从U盘启动(并不推荐)
  5. 认知跃迁,由生疏到成熟的四个关键!
  6. 信号隔离器在水处理控制系统的应用
  7. Linux - 第8节 - 进程信号
  8. 使用mybatis-plus产生java.sql.SQLSyntaxErrorException: Table ‘数据库.xxx表‘ doesn‘t exist(坑以踩)
  9. PBD加密专家(pb混淆加密大师)(pb obfuscator) 最新说明书
  10. 用c++做一个简单的打飞机小游戏(详细说明与注释)