浅谈iOS 自动调节文本高度
文字展示是任何GUI开发的一个最常规的编程任务。可能一提及文字我们脑中想到的无非就是 Label 和 Text 这两个关键词,今天我们就谈谈 Label。
无论在 Windows 或者 Web 开发中当 Label 中显示的文字内容是一个超长的文本,我们都是习惯于由当前的UI引擎自己去计算10几年来都是一种常识。直到我用iOS,真是有种想骂娘的冲动啊,设置个Label的自动高度都得有技巧真特么的坑!
坑就坑吧,与众多同僚一样还不照样得忍受着这个糟糕的UIKit的折磨仍然得用,谁叫 iOS的项目能卖得起价呢。既然不能反抗也只能学着享受了。
UILabel
如果UILabel独立存在于view内,默认情况下是显示单行,而且UIKit会依据UILabel的断词策略自动截断文字来显示。面对这种情况我们可以使用 iOS8 的自动化局布特性来解决。
具体做法:
- 为
UILabel增加 高度约束 - 将 lines 增加一个最大值(随机)
- 进入高度属性面版,将 "Relation" 选择为
Greater Than Equal
这样 UILabel 就成为一个自增高的标签控件了。
UITableViewCell
如果UILabel控制放至于 UITableView 中时我们就需要对 tableview 进行一些更改才能让每个表格行实现自动计算行高度。具体做法如下:
首先在 viewDidLoad() 内加入以下的代码:
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 44
estimatedRowHeight 这个值只需要设置一个与实际行高度差不多的整数就行了,其它的就交由 UIKit 自已去算就好了。
然后将 UILabel 的 lines 属性设置为 "0" (注意:这个与之前的方式就不一样了)
完成这两步我们的 tableview 内的越长文本内容就能实现自动行高计算了。
浅谈iOS 自动调节文本高度的更多相关文章
- 浅谈iOS视频开发
浅谈iOS视频开发 这段时间对视频开发进行了一些了解,在这里和大家分享一下我自己觉得学习步骤和资料,希望对那些对视频感兴趣的朋友有些帮助. 一.iOS系统自带播放器 要了解iOS视频开发,首先我们从 ...
- 浅谈iOS中的userAgent
浅谈iOS中的userAgent User-Agent(用户代理)字符串是Web浏览器用于声明自身型号版本并随HTTP请求发送给Web服务器的字符串,在Web服务器上可以获取到该字符串. 在公司产 ...
- 浅谈iOS多线程
浅谈iOS多线程 首先,先看看进程和线程的概念. 图1.1 这一块不难理解,重点点下他们的几个重要区别: 1,地址空间和资源:进程可以申请和拥有系统资源,线程不行.资源进程间相互独立,同一进程的各线程 ...
- 浅谈iOS中MVVM的架构设计与团队协作
说到架构设计和团队协作,这个对App的开发还是比较重要的.即使作为一个专业的搬砖者,前提是你这砖搬完放在哪?不只是Code有框架,其他的东西都是有框架的,比如桥梁等等神马的~在这儿就不往外扯了.一个好 ...
- iOS开发——文本高度
1.简单的计算文本高度 // 要计算的文本内容 NSString *testString = @"刘成利,软件工程专业毕业,iOS开发者,目前工作于北京,在证券金融领域从事iOS App开发 ...
- IOS中 浅谈iOS中MVVM的架构设计与团队协作
今天写这篇文章是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇文章的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
- 浅谈 iOS 与 H5 的交互- JavaScriptCore 框架
前言 小的作为一个iOS程序猿,可能研究JavaScript以及H5相关的知识并不是为了真正的要去转行做这一方面,其实更多的为了要研究OC中的JavaScriptCore框架,JavaScriptCo ...
- 浅谈iOS中MVVM的架构设计与团队协作【转载】
今天写这篇文章是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇文章的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
- 浅谈iOS需要掌握的技术点
鉴于很多人的简历中的技术点体现(很多朋友问我iOS需要知道注意哪些)! 技术点: 1.热更新 (及时解决线上问题) 2.runtime(json解析.数据越界.扩大button点击事件.拦截系统方法) ...
随机推荐
- mysql内存管理
1 内存管理结构 mysql有自己的内存申请和释放机制 mysql层有mem_root innodb层有mem_heap,mem_pool,buf_pool 它们的结构图如下 2 mem_root m ...
- 插入算法---java实现
插入排序java代码实现 package algorithms.插入排序; import java.io.BufferedReader; import java.io.InputStreamReade ...
- Georgia Tech Online Master of Science in Computer Science 项目经验分享
Georgia Tech Online Master of Science in Computer Science 项目经验分享 Posted on 2014/04/22 项目关键词:工科名校,计算机 ...
- Sr Software Engineer - Big Data Team
Sr Software Engineer - Big Data Team About UberWe’re changing the way people think about transport ...
- 【转】Linux思维导图
[原文]https://www.toutiao.com/i6591690511763898888/ 1.Linux学习路径: 2.Linux桌面介绍: 3.FHS(文件系统目录标准): 4.Linux ...
- You are not late! You are not early!
Do you think you are going No Where in Life? STOP! Take a deep breathe THINK! New York is three hour ...
- MSChart 设置饼图颜色 图例背景色 图例显示位置
chartField.Series.Clear(); chartField.ChartAreas.Clear(); chartField.Legends.C ...
- 记录使用git submodule时踩的坑
在使用git子模块的时候踩了一个坑 在使用git submodule updata --init --recursive命令,即递归更新子模块并初始化时碰到了一个问题: 经过一段不短时间的排查,发现问 ...
- Dijkstra(最短路求解)
Dijkstra(最短路求解) 模板: #include<iostream> #include<cstdio> #include<cstring> #include ...
- node版本查看管理工具
1.nvm : 有点坑爹,安装完后,发现node not found ,最后卸载了,重装node 2.bower :(前端)包管理器(选用) //安装方法 npm install bower -g / ...