iOS UITableView 解决估算行高和指定行高的矛盾
- 喜欢交朋友的加:微信号 dwjluck2013
1、一般来说 在iOS 中若UITableViewCell 固定行高, 会通过
- - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- return ;
- }
来设置;
2、如果需要由系统自动估算行高, 可以通过设置以下代码实现:
- // 动态行高
- self.tableView.rowHeight = UITableViewAutomaticDimension;
- // 预估行高
- self.tableView.estimatedRowHeight = ;
3、如果一个tableview即想用固定行高又想用预估行高(自动计算行高) 这两者的矛盾怎样解决呢?以下代码 关键在于 这句话:
- return UITableViewAutomaticDimension;
- - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- if (indexPath.section == || indexPath.section == ) {
- return ;
- }
- // 注意:解决固定行高和系统自动计算行高 其他组走系统自动计算行高
- return UITableViewAutomaticDimension;
- }
4.在cell中约束好之后 要写 self.contentView 的高度实际contentview的高度就是cell的高度 重点注意在cell中 子控件约束不能用
- contentView 约束 因为在设置self.contentView约束之前 self.contentView的高度都是0;
例如:
- - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
- {
- if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
- self.selectionStyle = UITableViewCellSelectionStyleNone;
- self.separatorInset = UIEdgeInsetsZero;
- [self.contentView addSubview:self.headerImageView];
- [self.contentView addSubview:self.titleLabel];
- [self.contentView addSubview:self.detailLabel];
- __weak typeof(self)weakself = self;
- [self.headerImageView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(weakself.mas_top).offset( / WIDTH_6S_SCALE);
- make.width.height.mas_offset( / WIDTH_6S_SCALE);
- make.left.equalTo(weakself.mas_left).offset( / WIDTH_6S_SCALE);
- }];
- [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(weakself.headerImageView.mas_top);
- make.left.equalTo(weakself.headerImageView.mas_right).offset( / WIDTH_6S_SCALE);
- make.height.mas_offset( / HEIGHT_6S_SCALE);
- }];
- [self.detailLabel mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.equalTo(weakself.titleLabel.mas_left);
- make.right.equalTo(weakself).offset(- / WIDTH_5S_SCALE);
- make.top.equalTo(weakself.titleLabel.mas_bottom).offset( / WIDTH_6S_SCALE);
- }];
- [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(weakself.headerImageView.mas_top).offset(- / WIDTH_5S_SCALE);
- make.left.right.equalTo(weakself);
- make.bottom.equalTo(weakself.detailLabel.mas_bottom).offset( / WIDTH_5S_SCALE);
- }];
- }
- return self;
- }
iOS UITableView 解决估算行高和指定行高的矛盾的更多相关文章
- mysql 行号 获取指定行数据
mysql 行号的实现 Select id,(@rowNum:=@rowNum+1) as rowNo From first,(Select (@rowNum :=0) ) bOrder by fir ...
- sed 删除最后几行 和删除指定行 awk使用
sed 删除最后几行 和删除指定行 转载原文链接:http://blog.51cto.com/lspgyy/1305489 sed 想删除文件中的指定行,是可以用行号指定也可以用RE来匹配的. 删 ...
- python实现Excel删除特定行、拷贝指定行操作
工作中遇到的,本来用VBA写的,操作很慢,尝试用Python实现, 任务需求: 从原始的两张表中拷贝行到五张表中,如下表所示: source1和source2是一样的格式: one t ...
- python3读取文件指定行的三种方案
技术背景 考虑到深度学习领域中的数据规模一般都比较大,尤其是训练集,这个限制条件对应到实际编程中就意味着,我们很有可能无法将整个数据文件的内容全部都加载到内存中.那么就需要一些特殊的处理方式,比如:创 ...
- C++操作文件行(读取,删除,修改指定行)
/******************************************************** Copyright (C), 2016-2018, FileName: main A ...
- IOS学习之路六(UITableView滑动删除指定行)
滑动删除指定行代码如下: Controller.h文件 #import <UIKit/UIKit.h> @interface TableViewController : UIViewCon ...
- +p解决vim粘贴自动缩进。 数字gg跳到vim指定行。 vim查找到后,enter键修改
+p解决vim粘贴自动缩进. 数字gg跳到vim指定行. vim查找到后,enter键修改
- iOS UITableView优化
一.Cell 复用 在可见的页面会重复绘制页面,每次刷新显示都会去创建新的 Cell,非常耗费性能. 解决方案:创建一个静态变量 reuseID,防止重复创建(提高性能),使用系统的缓存池功能. s ...
- iOS:UITableView表格视图控件
UITableView:表格视图控件,继承滚动视图控件UIScrollView,(类似于UIPickerView选择器,它主要通过设置数据源代理和行为代理实现协议来设置单元格) 对表格的操作主要 ...
随机推荐
- Sql Server 2016 创建内存数据库
官方教程:https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/survey-of-initial-area ...
- jquery中的attr与prop
http://www.cnblogs.com/Showshare/p/different-between-attr-and-prop.html
- 给第三方apk进行系统签名的几种方式【转】
本文转载自:http://blog.csdn.net/luzhenrong45/article/details/47733053 版权声明:本文为博主原创文章,未经博主允许不得转载. -------- ...
- CSU1808 地铁 —— dijkstra变形
题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1808 题解:由于中转线路需要花费一定的时间,所以一般的以顶点为研究对象的dijkst ...
- 配置maven环境变量并安装jar包到本地仓库
1.下载maven安装包,解压,解压目录如下: 2.配置M2_HOME变量为上一步的路径: 3.配置PATH变量,添加%M2_HOME%\bin; 查看是否配置成功 mvn -v : 4.安装jar ...
- BestCoder6 1002 Goffi and Squary Partition(hdu 4982) 解题报告
题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?pid=1002&cid=530 (格式有一点点问题,直接粘 ...
- 【Selenium】跳转问题
/** * rewrite the get method, adding user defined log</BR> * 地址跳转方法,使用WebDriver原生get方法,加入失败重试的 ...
- 003 - 修改Pycharm的项目文件树样式
相信习惯了Eclipse或者Windows的小伙伴对于Pycharm的目录树一定觉得特别别扭 因为它总是在文件前加一个三角形标注, 这样的标注在视觉上十分误导层级关系 修改的方式为 File -& ...
- Linux GCC常用命令学习
1简介 GCC 的意思也只是 GNU C Compiler 而已.经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言:它现在还支持 Ada 语言.C++ 语言.Java 语言.Objective ...
- Opencv— — mix channels
// define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...