当前位置: 首页 > news >正文

UITableView的style是UITableViewStyleGrouped

一般情况下,UITableViewStylePlain和UITableViewStyleGrouped是UITableView常用到的style,

之前都是用到的时候,遇到问题直接用度娘,差不多就够用了,今天在修复UI提出的间隙问题,来回改,总觉得没有改到命点。

下面是UI提出的要求:

 我项目里的代码片段是这样的:

    self.tableView = [[UITableView alloc]initWithFrame:(CGRectZero) style:(UITableViewStyleGrouped)];[self.view addSubview:self.tableView];[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {make.left.right.bottom.equalTo(@0);make.top.equalTo(@([UIDevice SafeAreaNaviHeight]));}];self.tableView.delegate = self;self.tableView.dataSource = self;self.tableView.tag = 10000;self.extendedLayoutIncludesOpaqueBars = YES;if (@available(iOS 11.0, *)) {[self refreshStableTableView:self.tableView];} else {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"self.automaticallyAdjustsScrollViewInsets = NO;
#pragma clang diagnostic pop}if (@available(iOS 15.0, *)) {//适配15之后headerHeight会默认22self.tableView.sectionHeaderTopPadding = 0;}self.tableView.contentInset = UIEdgeInsetsMake(7, 0, UIDevice.SafeAreaBottom +49, 0);self.view.backgroundColor = self.tableView.backgroundColor = [UIColor useLight:HexColor(blk_6) Dark:HexColor(d_blk_6)];self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

 UITableView用的style是UITableViewStyleGrouped

也在代理里设置了:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{return [UIView new];
}
//
- (UIView *)tableView:(UITableView *)tableView viewForFoooterInSection:(NSInteger)section{return [UIView new];
}
//
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{return .01;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{return .01;
}

感觉看着没有啥问题,所以来回试,第一次改的时候是动了个歪脑筋, 

将tableView的contentInset硬生生的改了一下,看起来大概达到UI的要求了,可能可以骗过UI吧,但是骗不了自己,这个间距并不精确。

self.tableView.contentInset = UIEdgeInsetsMake(7, 0, UIDevice.SafeAreaBottom +49 - 7, 0);

一直没有往tableFooterView上想,那是因为我一直以为代理里的viewForFooterInSection和tableView的tableFooterView是一个东西。

查完之后,大致知道了这两的区别:

tableFooterView是整个tableView的footerView;

代理创建的是每个section的footerView。

UITableView的style是UITableViewStyleGrouped的时候,tableFooterView会有个默认的高度,需要给tableFooterView一个view来实现自己的需求;当设置

self.tableView.tableFooterView = [UIView new];

不起作用。因为系统检测到高度为0时,会使用默认高度。所以在我的项目里需要做如下设置才能精确符合UI的要求

self.tableView.tableFooterView = [[UIView alloc]initWithFrame:(CGRectMake(0, 0, SCREEN_WIDTH, 7))];

代理里的viewForFooterInSection,如果不设置的话,会有个默认的空白高度,想要去除,或者想要指定的高度,那需要自己去实现代理;

如果是要去掉每个section的高度则在DataSourse的heightForFooterInSection return 0.01(不要return 0,不然会觉得没有设置高度,变成默认的高度)。为了保险起见同时在Delegate的viewForFooterInSection默认return [UIView new]确保高度设置为0.01成功这样就可以了。

tableHeaderView同理。

后期会把遇到的关于UITableView不同的style的不同设置也慢慢记录下来,方便自己理解,省的每次都是好像懂了,又好像还是啥也不懂。

http://www.lryc.cn/news/228919.html

相关文章:

  • Java17新增特性
  • VR全景技术在城市园区发展中有哪些应用与帮助
  • 在 SQL 中,当复合主键成为外键时应该如何被其它表引用
  • Ps:通过显示大小了解图像的打印尺寸
  • Linux - 驱动开发 - watchdog - SMP机制下多核确活
  • 概念解析 | LoRA:低秩矩阵分解在神经网络微调中的魔力
  • 量子计算和量子通信技术:引领潜力无限的未来
  • nodejs+vue+python+PHP+微信小程序-安卓- 电影在线订票系统的设计与实现-计算机毕业设计推荐
  • LightDB23.4支持mysql aes_encrypt/aes_decrypt/hex/unhex函数
  • uniapp——项目day04
  • 7-爬虫-中间件和下载中间件(加代理,加请求头,加cookie)、scrapy集成selenium、源码去重规则(布隆过滤器)、分布式爬虫
  • 创建自己的nas服务,从远端拉取所需文件
  • 智慧化城市内涝的预警,万宾科技内涝积水监测仪
  • 7-18 调用一个函数
  • VB.net TCP服务端监听端口接收客户端RFID网络读卡器上传的读卡数据
  • Springboot 集成 MongoDB
  • AM@定积分的定义求某些类型的极限
  • Perl爬虫程序的框架
  • 15. 机器学习——聚类
  • 华为笔记本电脑原装win10/win11系统恢复安装教程方法
  • 计算机毕业设计 基于SpringBoot的养老院管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • Python数据容器(序列操作)
  • 【C++】stack,queue和deque
  • Linux centos系统中添加磁盘
  • java网络编程之UDP协议
  • 几百封钓鱼邮件如何分析?一个简单的方法告诉你!
  • 【设计原则篇】聊聊开闭原则
  • LVS面试题
  • uniapp发行web页面在老版本浏览器打开一片空白
  • 数据结构—二叉树的模拟实现(c语言)