iOS自适应行高方法及问题
最近一周被项目的动态高度虐的很惨,感觉浪费了很多时间,但是值得高兴的是对动态高度的使用掌握了好多方法,并且知道了方法之间的区别和优缺点.
1.最常用的:
UITableView+FDTemplateLayoutCell
优点就不说了,博客大把的有;
缺点就是这个第三方必须将自己的每个子控件的约束是正确的,一旦哪个约束错误,或者是冲突,就会导致莫名的崩溃;
2.在控制器中对返回的数据根据文字多少自动计算高度:
对动态高度的控件根据文字的多少确定高度,从而得到总的cell的高度,对于行高将计算的结果存到对应的数据源model中,返回单元格高度的时候,直接返回model的高度即可.
注意如果可以对数据进行修改的话,记得调用的时候要在返回高度的协议方法里调用计算高度的方法,因为刷新表视图会走这方法,不会走创建cell的方法.
缺点就是:当内容过多的时候会计算不准确,还是有点坑.
3.在model中计算高度,设置属性单元格的高度属性,控制器直接返回即可;<和第二种方法类似,只是计算的地方不同,还可以在cell里计算,不过这个好像不行,因为创建cell的时候会先走高度的方法>
4.最简单的:
两句代码解决高度问题:
// self.tableView.estimatedRowHeight = 200; //设置预估高度,只要不是差的太离谱就行
// self.tableView.rowHeight = UITableViewAutomaticDimension;// 自定计算
话说只能在iOS8系统上才能使用,但看API在6.0就可以了,不过在7的系统上貌似会崩溃.<这个还是到去年的时候再用吧...嘿嘿>
5.最后项目中还是用的这个方法:MyLinearLayout
MyLinearLayout的实现充分参考了Android中的LinearLayout布局,但是却比LinearLayout更为强大,他几乎可以实现AutoLayout的所有功能甚至其不具备的功能。MyLinearLayout是一个基于流式布局的容器视图,我们只需要把子视图添加到MyLinearLayout中,并设置一些简单的约束参数那么就可以完成各种布局的要求了,而且后续中只要子视图的位置和大小进行变化都会触发容器视图里面的子视图进行重新布局。
缺点就是:性能不高,会一直的计算高度.
对高度的问题就总结到这里了,希望大神纠错或者是提出建议,我们一起学习,嘿嘿!!!!!!
iOS自适应行高方法及问题的更多相关文章
- 对tableView三种计算动态行高方法的分析
tableView是一个神奇的东西,可以这么说,就算是一个初学者如果能把tableView玩的很6,那编一般的iOS的需求都问题不大了.tableView是日常开发中用烂了的控件,但是关于tableV ...
- C# 设置Excel数据自适应行高、列宽的2种情况
Excel表格中,由于各种数据的复杂性,可能存在单元格中的数据字号大小.数据内容长度不一而出现,列宽过宽.过窄或者行高过大.过小的问题.常见的解决方法是调整行高.列宽.在Microsoft Excel ...
- Java 设置Excel自适应行高、列宽
在excel中,可通过设置自适应行高或列宽自动排版,是一种比较常用的快速调整表格整体布局的方法.设置自适应时,可考虑2种情况: 1.固定数据,设置行高.列宽自适应数据(常见的设置自适应方法) 2.固定 ...
- rmReport 自适应行高(自动行高)
这个问题 1.先中主项数据--属性--stretched(伸展):true 选中主项数据中的所有列--属性--其他属性--自动折行 --伸展
- iOS UITableView行高自行扩展
myTableView.estimatedRowHeight = ; myTableView.rowHeight = UITableViewAutomaticDimension; 不需要实现 - (C ...
- ui-grid样式,表格高度自适应行高,没有滚动条,去掉表头
前后端设置:
- iOS开发tips-UITableView、UICollectionView行高/尺寸自适应
UITableView 我们都知道UITableView从iOS 8开始实现行高的自适应相对比较简单,首先必须设置estimatedRowHeight给出预估高度,设置rowHeight为UITabl ...
- UITableView、UICollectionView行高/尺寸自适应
UITableView 我们都知道UITableView从iOS 8开始实现行高的自适应相对比较简单,首先必须设置estimatedRowHeight给出预估高度,设置rowHeight为UITabl ...
- ios label 自动计算行高详解
在OC当中自动计算行高主要调用系统的 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #ffffff } span ...
随机推荐
- 导弹拦截( 二分+dilworth定理)
https://www.luogu.org/problemnew/show/P1020 原题 接下来是dilworth定理 https://blog.csdn.net/u011676717/artic ...
- 剑指Offer的学习笔记(C#篇)-- 孩子们的游戏(圆圈中最后剩下的数)
题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...
- win10 专业版永久密钥
激活码/密匙: 1.专业版: W269N-WFGWX-YVC9B-4J6C9-T83GXMH37W-N47XK-V7XM9-C7227-GCQG92X7P3-NGJTH-Q9TJF-8XDP9-T83 ...
- Vuex的mapGetters方法使用报错
报错信息: ERROR in ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/selector.js?type=script ...
- python_公共方法
1.计算长度 value = "wangdianchao" # 计算字符个数(长度) number = len(value) print(number) 2.索引取值 value ...
- ESLint 报错 import/no-unresolved
马的,就这个规则百度了大半天终于找到可以用的: 不得不说百度真的辣鸡 还是翻墙去谷歌找到了解决方法 解决方法是:在 .eslintrc 中设置 "rules": { "i ...
- ZrOJ #878. 小K与赞助 (网络流)
傻逼最大费用流: . 两棵树分别流,最后汇合. CODE #include <bits/stdc++.h> using namespace std; #define pb push_bac ...
- Python 9--特殊方法
- Codeforces Round #583 (Div. 1 + Div. 2, based on Olympiad of Metropolises) C题
C. Bad Sequence Problem Description: Petya's friends made him a birthday present — a bracket sequenc ...
- PhpStorm 使用 Stylus 回车自动缩进的问题
如图所示,取消勾选即可换行自动缩进,不用再一个个打空格了!