让tableView的高度等于contentSize的高度、动态调整tableView的高度、tableView的高度自适应布局
文章概要:
1、简介下,tableView中的内容如何高度自适应的布局
2、如何做到让tableView的高度动态调整
还是看图作文吧~
首先,tableView的高度就是用户能够看见里面更大世界的那个窗口的大小,一般是固定的。
然后在cell里面布局的时候,像图中粉红色的view展示的内容需要全部展示出来,这样的话这个粉红view的高度就需要是动态变化的。比如一个UILabel,因为它是属于有内置大小的控件(自身的size通过其内部的内容所决定可以自身计算出来的控件),你只需要设置这个label的原点(x,y)和宽度就行了,当然还要设置lineNumber = 0(不限制行数)。然后cell的高度不要设定成固定数值,cell的高度由内部view决定。
tableView是scrollView的子类,那如何设置contentSize呢?由最后一个cell的底部决定。
OK。这就是我们一般做的tableViewCell高度自适应的布局方式,思维发散下,我们直接用scrollView的时候,设置contentSize也要用这种布局策略:由内部决定外部。
-----------
然后第二个需求是这样的:打开软件弹出赠送的优惠券列表,优惠券多的情况下就固定tableView的高度,让里面的内容可以滚动。如果优惠券少的情况下,里面的内容不足以滚动的情况下,就让tableView本身的高度变为“刚好”能展示里面的内容就行了。
将这个需求转化为技术语言的话就是,给定tableView的contentView一个最大的高度MaxHeight,如果contentView的真实高度小于MaxHeight的时候,tableView的高度就是contentView的真实高度,如果contentView的真实高度大于MaxHeight的时候,tableView的高度就固定在MaxHeight。
实现代码:
- (void)setupMonitor {
[self.homePageCouponsTableView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];
} - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
CGRect tableFrame = self.homePageCouponsTableView.frame;
tableFrame.size = self.homePageCouponsTableView.contentSize;
if (tableFrame.size.height < ) {
[self.homePageCouponsTableView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(self.titleLabel.mas_bottom).offset();
make.left.mas_equalTo(self.bgView.mas_left).offset();
make.right.mas_equalTo(self.bgView.mas_right).offset(-);
make.bottom.mas_equalTo(self.bgView.mas_bottom).offset(-);
make.height.mas_equalTo(tableFrame.size.height);
}];
[self.homePageCouponsTableView.superview layoutIfNeeded];
}
}
让tableView的高度等于contentSize的高度、动态调整tableView的高度、tableView的高度自适应布局的更多相关文章
- iOS学习之路十三(动态调整UITableViewCell的高度)
大概你第一眼看来,动态调整高度是一件不容易的事情,而且打算解决它的第一个想法往往是不正确的.在这篇文章中我将展示如何使图表单元格的高度能根据里面文本内容来动态改变,同时又不必子类化UITableVie ...
- [转] iOS TableViewCell 动态调整高度
原文: http://blog.csdn.net/crayondeng/article/details/8899577 最近遇到了一个cell高度变化的问题,在找解决办法的时候,参考了这篇文章,觉得不 ...
- 动态调整UITableViewCell高度的实现方法
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPa ...
- iOS开发——Autolayout下动态调整单元格高度
情景描述: 有时候我们希望更新某一个单元格的数据,通常的做法是使用reloadData方法更新整个单元格.但是对一些情况是不适用的或者说实现起来比较麻烦.比如说这种简单的"点开"一 ...
- css经典布局——头尾固定高度中间高度自适应布局
转载:穆乙 http://www.cnblogs.com/pigtail/ 相信做过后台管理界面的同学,都非常清楚这个布局.最直观的方式是框架这个我不想多写费话,因为我们的重心不在这里.如果有不了解的 ...
- Android - 动态调整ListView高度
布局中,如果设计ListView的高度为包裹内容,那么ListView的高度是随着它的子条目的数量的变化而改变的, 这就可能会导致ListView下面的一些控件的位置也会随着ListView的高度的变 ...
- HighCharts 图表高度动态调整
HighCharts 图表高度动态调整 前言 在使用HighCharts控件过程中,发现图表可以自适应div的高度,无法根据图表x.y轴的数量动态调整div高度,否则图标挤在一起,看起来非常不美观,也 ...
- android中动态修改ImageView控件的宽高度
本例实现了动态修改ImageView控件的宽高度,有两个按钮,一个按钮实现放大image,一个按钮实现缩小image activity_main.xml <?xml version=" ...
- 问题:一球从某高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第n次落地时,共经过多少米?第n次反弹多高?
import java.util.Scanner; //题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半:再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? public c ...
随机推荐
- 4500-X启动到“511K bytes of non-volatile configuration memory”,无法继续?
在设备做了某些配置后,尤其是升级,重启设备后,发现设备在如下界面卡住,无法进一步进入CLI命令行. Platform Manager: starting in standalone mode (act ...
- 【原】python-jenkins信息
1.官方文档: https://python-jenkins.readthedocs.io/en/latest/examples.html#example-1-get-version-of-jenki ...
- 脚本中的random几率问题详解
random解释: 没有固定数值,随即给的意思,数值越大就几率越低,跟爆率也不多,如下脚本,所有都抽不到的话,就会执行最后面没有检测条件的那个. [@main] #if random 10 #ac ...
- 「NOIP2018」赛道修建
传送门 Luogu 解题思路 一眼先二分(上界树的直径,下界最小边权),然后再考虑 \(\text{DP}\). 对于当前节点 \(u\),在它的所有儿子中分别返回一条匹配不完的长度最大的路径 \(M ...
- 操作COOKIE的函数
一个同学慧涛分享给我的他写的操作cookie的函数,贴出来,做个笔记: //操作cookie //删除cookie hcookie('cookiename','','del'); //查询cookie ...
- GO第归
Go 语言递归函数 递归,就是在运行的过程中调用自己. 语法格式如下: func recursion() { recursion() /* 函数调用自身 */ } func main() { ...
- IDEA 查看字节码
参考:https://www.jianshu.com/p/18953ec8c0b7 打开工具栏 输入参数: 参数: $JDKPath$\bin\javap.exe -c $FileClass$ $Ou ...
- lc 0224
目录 ✅ 766. 托普利茨矩阵 描述 解答 cpp py ✅ 566. 重塑矩阵 描述 解答 java py ✅ 637. 二叉树的层平均值 描述 解答 cpp py java 0224 algo ...
- 如何删除 AppStore 中的恶意评论 iOS
AppStore 中的评论,对于产品的形象影响很大.如果评论榜中出现了恶意评论,会对产品形象影响很大,当然这些差评有可能是用户的真实反馈,需要产品设计人员做好产品设计,满足客户的需求.另外也可能是竞争 ...
- T4 多文件生成说明
1.安装T4,自动生成文件 Manager.ttinclude <#@ assembly name="System.Core"#> <#@ assembly na ...