Swift 自定义UITableViewCell以及Cell的底图跟着滑动也滑动。

2024-05-05 19:48

本文主要是介绍Swift 自定义UITableViewCell以及Cell的底图跟着滑动也滑动。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

找工作依然不好找,还需努力才是
还是按着OC的惯性思维看过来
首先得有个tableview,然后就是实现其的代理方法语法都好说的,就看
这个里面就是咱们定义cell时所写的代码,里面也用到复用。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {let initIdentifier = "Cell"//这行代码是复用,我也试着将这个cell强行:LinmoTableViewCell,可是就报错了,说是有了自定义的类型,就不让我为空了,但是默认就ok,难道我自定义里面得有默认初始的方法?这里很是疑惑,希望有知道的大神给我讲讲。var cell = tableView.dequeueReusableCell(withIdentifier: initIdentifier)if (cell == nil){//如果为空了,我们就得给它初始化,但这里初始化之后,由于cell的类型不清楚,所以无法应用我们自定义类里的方法。cell =  LinmoTableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: initIdentifier)}return cell!;}

就这样,为了用自定义cell里面的方法,我写在了display里面

 func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {//这里应该是tableview显示在屏幕上的cell会触发的事件,通过indexPath我们不难找到指定的cell,这里强行as! 然后就可以用咱们自定义里面的方法了,回调也可以了let mycell = cell as! LinmoTableViewCellmycell.setData(dic: (dataArr?[indexPath.row])!)}

好,前面就是一般的创建cell的方法,下面这个就是别人写的炫酷的代码了 http://www.tuicool.com/articles/mmEjYj6
这段代码要写在,自定义cell中

 - (CGFloat)cellOffset
{/*- (CGRect)convertRect:(CGRect)rect toView:(nullable UIView *)view;将rect由rect所在视图转换到目标视图view中,返回在目标视图view中的rect这里用来获取self在window上的位置*/CGRect toWindow = [self convertRect:self.bounds toView:self.window];//获取父视图的中心CGPoint windowCenter = self.superview.center;//cell在y轴上的位移  CGRectGetMidY之前讲过,获取中心Y值CGFloat cellOffsetY = CGRectGetMidY(toWindow) - windowCenter.y;//位移比例CGFloat offsetDig = 2 * cellOffsetY / self.superview.frame.size.height ;//要补偿的位移CGFloat offset =  -offsetDig * cellHeight/2;//让pictureViewY轴方向位移offsetCGAffineTransform transY = CGAffineTransformMakeTranslation(0,offset);self.pictureView.transform = transY;return offset;
}

里面两点

  1. 算出偏移量
  2. 让图片去走偏移量(transform)
    就酱。
    还没完呢
    这个方法在哪里触发呢?就是滑动时候触发
func scrollViewDidScroll(_ scrollView: UIScrollView) {let array:Array<LinmoTableViewCell> = tableview?.visibleCells as! Array<LinmoTableViewCell>for ( _, object ) in array.enumerated() {object.cellOffset()}}

这篇关于Swift 自定义UITableViewCell以及Cell的底图跟着滑动也滑动。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/962534

相关文章

SpringBoot 自定义消息转换器使用详解

《SpringBoot自定义消息转换器使用详解》本文详细介绍了SpringBoot消息转换器的知识,并通过案例操作演示了如何进行自定义消息转换器的定制开发和使用,感兴趣的朋友一起看看吧... 目录一、前言二、SpringBoot 内容协商介绍2.1 什么是内容协商2.2 内容协商机制深入理解2.2.1 内容

基于Redis有序集合实现滑动窗口限流的步骤

《基于Redis有序集合实现滑动窗口限流的步骤》滑动窗口算法是一种基于时间窗口的限流算法,通过动态地滑动窗口,可以动态调整限流的速率,Redis有序集合可以用来实现滑动窗口限流,本文介绍基于Redis... 滑动窗口算法是一种基于时间窗口的限流算法,它将时间划分为若干个固定大小的窗口,每个窗口内记录了该时间

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

cell phone teardown 手机拆卸

tweezer 镊子 screwdriver 螺丝刀 opening tool 开口工具 repair 修理 battery 电池 rear panel 后盖 front and rear cameras 前后摄像头 volume button board 音量键线路板 headphone jack 耳机孔 a cracked screen 破裂屏 otherwise non-functiona

Oracle type (自定义类型的使用)

oracle - type   type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要特殊的格式, 如将name定义为(firstname,lastname)的形式,我们想把这个作为一个表的一列看待,这时候就要我们自己定义一个数据类型 格式 :create or repla

HTML5自定义属性对象Dataset

原文转自HTML5自定义属性对象Dataset简介 一、html5 自定义属性介绍 之前翻译的“你必须知道的28个HTML5特征、窍门和技术”一文中对于HTML5中自定义合法属性data-已经做过些介绍,就是在HTML5中我们可以使用data-前缀设置我们需要的自定义属性,来进行一些数据的存放,例如我们要在一个文字按钮上存放相对应的id: <a href="javascript:" d

一步一步将PlantUML类图导出为自定义格式的XMI文件

一步一步将PlantUML类图导出为自定义格式的XMI文件 说明: 首次发表日期:2024-09-08PlantUML官网: https://plantuml.com/zh/PlantUML命令行文档: https://plantuml.com/zh/command-line#6a26f548831e6a8cPlantUML XMI文档: https://plantuml.com/zh/xmi

专题二_滑动窗口_算法专题详细总结

目录 滑动窗口,引入: 滑动窗口,本质:就是同向双指针; 1.⻓度最⼩的⼦数组(medium) 1.解析:给我们一个数组nums,要我们找出最小子数组的和==target,首先想到的就是暴力解法 1)暴力: 2)优化,滑动窗口: 1.进窗口 2.出窗口 3.更新值 2.⽆重复字符的最⻓⼦串(medium) 1)仍然是暴力解法: 2)优化: 进窗口:hash[s[rig