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.hqwc.cn/news/171525.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过postgis空间库导入sql格式的矢量数据到arcgis中

1、在postgis中创建数据库 命名为test3 2、创建空间扩展 3、导入sql矢量文件 进入psql.exe目录中 进入dos命令框中 输入命令,其中host输入自己的主机ip,database为自己的数据库名称,数据路径修改为自己电脑上的路径,注意反斜杠 psql

企业计算机服务器中了halo勒索病毒怎么办,halo勒索病毒解密数据恢复

随着科技技术的不断提升,越来越多的企业开始走向数字化办公,让企业的生产运营得到了快速发展,但随之而来的网络安全威胁引起了人们的重视,近期,云天数据恢复中心陆续接到很多企业的求助,企业的计算机服务器…

双编码器构建机器人零力拖动/导纳控制思路

前言 这篇博客主要记录昨日与实验室大佬针对UR5机器人拖动示教功能实现的思路。由于本人并非主攻力控方面。直到昨天在做实验的时候,与力控组的大佬讨论过后才了解UR机器人实现导纳控制的思路。 关于导纳控制/零力拖动 导纳控制与阻抗控制单从字面去理解很容易记…

【赠书第3期】用ChatGPT轻松玩转机器学习与深度学习

文章目录 前言 1 机器学习 2 深度学习 3 使用ChatGPT进行机器学习和深度学习 4 推荐图书 5 粉丝福利 前言 机器学习和深度学习是当前最热门的技术领域之一,这些技术正在不断地改变我们的生活和工作方式。ChatGPT 是一款基于大规模预训练模型的自然语言处理工…

matlab GUI界面实现ZieglerNicholas调节PID参数

1、内容简介 略 11-可以交流、咨询、答疑 ZieglerNicholas、PID、GUI 2、内容说明 GUI界面实现ZieglerNicholas调节PID参数 通过ZieglerNicholas调节PID参数,设计了GUI 3、仿真分析 略 4、参考论文 略 链接:https://pan.baidu.com/s/1yQ1yDfk-_…

Prometheus+Ansible+Consul实现服务发现

一、简介 1、Consul简介 Consul 是基于 GO 语言开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务发现和配置管理的功能。Consul 提供服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等功能。 在没有使用 consul 服…

JavaScript如何实现钟表效果,时分秒针指向当前时间,并显示当前年月日,及2024春节倒计时,源码奉上

本篇有运用jQuery&#xff0c;记得引入jQuery库&#xff0c;否则不会执行的喔~ <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title></title> <meta name"chenc" content"Runoob"> <met…

【Redis】Hash哈希类型

上一篇&#xff1a; set集合 https://blog.csdn.net/m0_67930426/article/details/134366814?spm1001.2014.3001.5502 目录 Hset Hget Hlen Hkeys Hvals Hincrby Hdecrby Hsetex Hsetnx 官网&#xff1a; https://redis.io/commands/?grouphash Hset 创建哈希集…

SpringBoot整合Dubbo和Nacos

1.概述 dubbo是一个高性能、轻量级的开源分布式服务框架&#xff0c;早期由阿里巴巴进行开源。它提供了服务注册、发现、调用和负载均衡等分布式服务治理功能&#xff0c;为分布式开发提供了极大便利。dubbo核心概念包括&#xff1a;Provider&#xff08;消费提供者&#xff0…

【postgresql】CentOS7 安装pgAdmin 4

Pgweb Pgweb是PostgreSQL的一个基于web的数据库浏览器&#xff0c;用Go编写&#xff0c;可在Mac、Linux和Windows机器上运行。以零依赖性的简单二进制形式分布。非常易于使用&#xff0c;并具有适当数量的功能。简单的基于web和跨平台的PostgreSQL数据库浏览器。 特点 跨平台…

Mac安装配置Tomcat,以及使用(详解)

目录 一、Tomcat下载&#xff1a; 1、左栏选择Tomcat版本 2、点击下载即可&#xff0c;任选其一 ​编辑3、下载好的文件夹放到用户名下即可&#xff08;之前已经下载过&#xff0c;这里以Tomcat 8.5.88为演示&#xff09;&#xff0c;这里提供8.5.88的安装包&#xff1a; 二…

Actipro Software WinForms Controls 23.1.2

Actipro它被认为是一组 UI 控件&#xff0c;用于为用户和开发人员创建漂亮的窗口窗体以及桌面应用程序。Actipro Software 创建于 1999 年&#xff0c;被认为是为用户和开发人员&#xff08;主要为 Microsoft 平台 .NET&#xff09;提供软件组件的私营提供商。基于克利夫兰&…