23_iOS干货15_cell的重用&&tableView的HeaderView或FooterView滑动固定问题_ios tableview section footerview 固定-程序员宅基地

1,tableview 的重用尽量使用左边的取。如果tableview 里面的cell 风格不一样,identifier 设置为不同即可。不然fps 上不来,详见下面图片

2,cell重用的快速写法

ReUseCell:

static NSString *rid=<#rid#>;  

 <#Class#> *cell=[tableView dequeueReusableCellWithIdentifier:rid];  

 if(cell==nil){  

 cell=[[<#Class#> alloc] initWithStyle:UITableViewCellStyleDefault      reuseIdentifier:rid];  

 }  

 return cell;

3,解决HeaderView或FooterView滑动固定问题:

 

  • 方法1:将tableView的style设置为UITableViewStyleGrouped
  • 方法2:就是将UIView设置为整个tableView的headerView或者footerView而不是某个section的headerView或footerView。
  • 方法3:scrollView的代理方法解决HeaderView滑动固定问题

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (scrollView == self.tableView)
    {
        CGFloat sectionHeaderHeight = 10; //sectionHeaderHeight
        if (scrollView.contentOffset.y <= sectionHeaderHeight && scrollView.contentOffset.y >= 0) {
            scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
        } else if (scrollView.contentOffset.y >= sectionHeaderHeight) {
            scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0);
        }
    }
}
解决FooterView滑动固定问题
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, -10, 0);

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

    if (scrollView == self.tableView)
    {
        CGFloat sectionFooterHeight = 10; //sectionFooterHeight
        if (scrollView.contentOffset.y >= sectionFooterHeight && scrollView.contentOffset.y <= 0) {
            scrollView.contentInset = UIEdgeInsetsMake(0, 0, -scrollView.contentOffset.y, 0);
        } else if (scrollView.contentOffset.y <= sectionFooterHeight) {
            scrollView.contentInset = UIEdgeInsetsMake(0, 0, -sectionFooterHeight, 0);
        }
    }
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a_horse/article/details/81902461

智能推荐

中国十大用户体验设计咨询公司排名_国内咨询公司排行榜-程序员宅基地

文章浏览阅读1.8w次。中国十大用户体验设计咨询公司排名随着全球互联网产业的飞速发展,人们对于用户体验的嗅觉变得更加灵敏。用户体验对应的是体验地图,叫user experience map或者user journey map,集中于要做的产品,用来挖掘用户在跟产品的触点中的痛点,并给出对应的解决方法,让以人为本的设计理念贯穿开发的最早期甚至进入整个品牌的发展。国内不乏优秀的用户体验设计咨询公司,今天就盘点一下:既有中..._国内咨询公司排行榜

XML,WSDL,SOAP,JSON的关系及区别_api接口xml、json、soap的区别-程序员宅基地

文章浏览阅读1k次。原文地址:XML,WSDL,SOAP,JSON的关系及区别1.XML与JSON比较首先,XML与JSON的目前主要的两种数据交换格式。其结构如下:<?xml version="1.0" encoding="utf-8"><country> <name>中国</name> <province> <name&..._api接口xml、json、soap的区别

在SpringMVC中集成Swagger2_springmvc集成swagger2-程序员宅基地

文章浏览阅读493次。为什么要使用Swagger2在SpringMVC中集成Swagger2引入依赖添加Swagger2配置类让Spring加载Swagger2配置类访问Swagger2为什么要使用Swagger2  在现在的项目开发中,后端越来越多的倾向于只提供api接口,而不进行页面等的搭建,编写操作,无论是采用前后端分离的开发模式,还是给移动端提供api接口等都是如此。而..._springmvc集成swagger2

Version 当前jdk版本号 of the JVM is not suitable for the this product.Version:1.8 or greater is required_the jvm level was changed from '11' to '17', revie-程序员宅基地

文章浏览阅读3.9w次,点赞19次,收藏35次。eclipse对应的jdk版本打不开解决办法一:可以更改jdk版本。解决办法二:我们要知道 JRE是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。 JDK是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译j_the jvm level was changed from '11' to '17', review the jdk version range on

WSDAN 论文及代码解读-程序员宅基地

文章浏览阅读5.3k次,点赞9次,收藏35次。论文标题:See Better Before Looking Closer: Weakly Supervised Data AugmentationNetwork for Fine-Grained Visual Classification针对目标:细粒度图像分类下载地址:https://arxiv.org/pdf/1901.09891v2.pdf官方github地址: https://github.com/tau-yihouxiang/WS_DANpytorch复现版github地址:https._wsdan

NOI图论算法:网络流_noi网络流要求-程序员宅基地

文章浏览阅读197次。网络流https://www.bilibili.com/video/BV15p4y1C7zWhttps://www.bilibili.com/video/BV1HE411Y7sMhttps://www.bilibili.com/video/BV1rW411K7A9https://www.bilibili.com/video/BV1Jt4y1U79chttps://www.bilibili.com/video/BV1Da4y1t7bihttps://www.bilibili.com/v_noi网络流要求

随便推点

MFC双缓冲绘图-程序员宅基地

文章浏览阅读2.3k次,点赞3次,收藏26次。双缓冲绘图的核心是将所有绘图操作的屏幕设备CDC pDC 用自定义的内存设备CDC MemDC来代替,然后通过在内存的位图CBitmap中作图,然后将作好的图复制到屏幕MemDC来显示,同时禁止背景刷新,从而消除闪烁。一、原因窗体在响应WM_PAINT消息的时候要进行复杂的图形处理,那么窗体在重绘时由于过频的刷新而引起闪烁现象。因为窗体在刷新时会有一个擦除原来图象的过程OnEraseBkgnd,它利用背景色填充窗体绘图区,然后在调用新的绘图代码进行重绘,这样一擦一写造成了图象颜色的反差。当WM_PA_mfc双缓冲绘图

Leetcode--easy系列1_leetcode easy pdf-程序员宅基地

文章浏览阅读1.2k次。#6 ZigZag ConversionThe string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)_leetcode easy pdf

jmeter控制请求执行顺序_jmeter怎么控制请求之间的顺序-程序员宅基地

文章浏览阅读9.6k次,点赞3次,收藏44次。一、同一个线程组内可通过jmeter-Critical Section Controller (临界部分控制器)来控制业务逻辑:    根据锁名来控制并发,同一个锁名之下,在同一时间点只能存在一个运行中,适用于控制并发的场景。锁名类型:    锁名为空,认为每个锁为不同的锁锁名相同,多个锁认为是同一个锁,同一个时间点只能存在一个运行中锁名为变量,根据变量值来判断是不是属于同一个锁,变量值为相同时,则认为是同一个锁作用临界区控制器确保其子节点下的取样器或控制器将被执行(只有一个线程作为一个锁)_jmeter怎么控制请求之间的顺序

VUE3.0实现websocket_vue3 websocket-程序员宅基地

文章浏览阅读2w次,点赞13次,收藏89次。VUE3.0实现websocket1、 vue2.0与vue3.0的区别先说一下网上很多资料的websocket都是针对vue2.0的,我这个vue入门小菜鸟,对于vue的整体实现过程理解还是有偏差,因而记录下2.0到3.0的变化。其参考了该博主的文章链接: 让你30分钟快速掌握vue 3。其主要是对vue3.0新增了setup函数,取消了data变量的赋值。感兴趣的可以自行阅读。这里只做记录。Vue2--------------vue3beforeCreate -> setup()cr_vue3 websocket

mysql的substring_index 字段截取-程序员宅基地

文章浏览阅读2.2k次。SELECT substring_index(data_value, ' 组织机构类型', 1),data_value FROM `test` where data_value like '%组织机构类型%';SELECT CONCAT("组织机构类型",substring_index(data_value, ' 组织机构类型', -1) ),data_value FROM `test` w...

android AMS原理解析_android9.0 ams返回逻辑-程序员宅基地

文章浏览阅读715次。startactivityapp启动过程启动下半场,AMS返回后部分结构继承关系_android9.0 ams返回逻辑

推荐文章

热门文章

相关标签