自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(630)
  • 收藏
  • 关注

原创 iOS中多个tableView 嵌套滚动特性探索

这个时候就有一个问题,就是正常的情况下,如果我们滑动内部 小的tableView, 如果开始滑动的时候, 内部的tableView 没有滚动。如果我们开始滑动内部小的tableView的时候,tableView在该方向上已经滚动到头了,则直接执行外层tableView的滚动,到尽头,我们滑动其滚动到尽头的时候,根据上面的机制,就会带动外层的tableView滚动,这是我们不想看到的,如果内部的滚动到边界的时候,外层的tableView已经滚动到头了,则内部的tableView。

2024-07-07 20:42:31 388

原创 封装了一个仿照抖音效果的iOS评论弹窗

开发一个类似抖音评论弹窗交互效果的弹窗,支持滑动消失,滑动查看评论效果如下图。

2024-07-07 14:58:20 935

原创 iOS UITableView自带滑动手势和父视图添加滑动手势冲突响应机制探索

我们有时候会遇到这样的一个交互场景:我们有一个UITableView放在一个弹窗中,这个弹窗可以通过滑动进行展示和消失(跟手滑动的方式),然后这个UITableView放在弹窗中,并且可以滚动,展示一些内容,比如商品信息,评论,(类似抖音的评论弹窗),并且下滑的时候,如果tableView已经滑动到了顶部,就可以响应滑动手势,继续向下滑动弹窗。

2024-07-07 13:49:08 1178

原创 封装了一个iOS滚动厨窗效果

我们要实现如图的厨窗效果,不能通过在tableView底部添加一个背景图片的方式,因为这需要修改整个tableView的背景色为透明,影响到的范围太大,只能将这个效果局限在这个cell 中,然后通过监听tableView的滚动的方式来实现。

2024-06-29 18:39:01 1122

原创 iOS shouldRecognizeSimultaneouslyWithGestureRecognizer 调用机制探索

shouldRecognizeSimultaneouslyWithGestureRecognizer 经常会看到,但是一直没有弄清楚其中的原理和运行机制,今天专门研究下其运行规律我们准备三个视图,如下,红色的是绿色视图的父视图,绿色视图是蓝色视图的父视图,为了探索 shouldRecognizeSimultaneouslyWithGestureRecognizer并且,每一个视图中都有如下代码。

2024-06-28 23:32:18 554

原创 iOS 实现类似抖音滚动效果

整体上我们使用tableView实现,为了预留内容的缓冲,我们将tableView 的contentinset设置为上面一个屏幕的高度,下面一个屏幕的高度,左右为0,这样保证我们滚动过去的时候都是准备好的内容然后就是滑动效果的实现了,主要就是我们在scrollViewWillEndDragging方法中获取到停止拖动(手指离开)时候的速度。在scrollViewDidEndDragging 方法中通过translationInView方法判断当前滑动的方向,

2024-06-26 21:14:07 678 2

原创 封装了一个iOS联动滚动效果

就是在 didEndDisplayingCell 方法中通过indexPathsForVisibleItems 接口获取当前可见的cell对应的indexPath, 然后获取到item最小的那一个,即可,同时,还要在 willDisplayCell 方法中直接设置标题的选中属性,否则由于重用机制,导致选中的展示错乱。

2024-06-25 21:52:04 387

原创 封装了一个优雅的iOS转场动画

【代码】封装了一个优雅的iOS转场动画。

2024-06-24 22:10:13 392

原创 iOS调整collectionViewCell顺序

就是设置collectionView调整顺序的代理方法,这里要注意一点调整过代理方法之后,一定要修改数据源,否则导致错乱。还有就是在collectionView上面添加一个长按手势,在长按手势的不同阶段,调用collectionView 调整顺序的系统方法 beginInteractiveMovementForItemAtIndexPath等等。

2024-06-10 17:19:28 510

原创 使用贝塞尔曲线实现一个iOS时间轴

就是通过贝塞尔曲线画出时间轴的圆环的路径,然后使用CAShaper来渲染UI,再通过animation.beginTime = [cilrclLayer convertTime:CACurrentMediaTime() fromLayer:nil] + circleTimeOffset 来设置每个圆环的动画开始时间,,每个地方都是有两层layer的,一层是底部灰色样式的(即没有到达时候的颜色)一层是到达得阶段的颜色,到达的layer在上面,如果要开启动画,我们就得先将。

2024-06-09 20:53:40 578 1

原创 封装了一个简单理解的iOS竖直文字轮播

就是持有两个视图,并且两个视图同时改变origin.y动画结束之后,判断哪个视图是在上面并且看不到的,则将该视图移动到底部,并且该视图展示下一跳内容在开始下一轮动画。

2024-06-06 23:45:32 425

原创 封装了一个仿照抖音评论轮播效果的iOS轮播视图

一个是willShowView,在一次动画过程中,我们改变current View的frame,同时改变willShowView的frame,同时,需要改变currentVIew 的transform.y不然的话,currentView里面的内容就没有缩放效果了,看起来就是单纯的展示不下的感觉,动画结束之后,将currentView指向willView, willView指向currentView, 同时,将刚刚消失的视图,放到底部,等待下次动画展示。

2024-06-06 21:10:46 539

原创 Couldn‘t determine repo type for URL: `https://cdn.cocoapods.org/`: execution expired

在podfile中添加如下代码。

2024-06-05 21:56:08 155

原创 封装了一个使用UICollectionViewLayout 实现的吸附居左banner图

实现的原理就是通过自定义UICollectionView layout,然后。这里是之前写的一个,使用自定义视图实现的,没有使用。UICollectionViewLayout 实现。设置减速速率是快速就可以达到吸附的效果。

2024-06-02 18:35:13 253

原创 [!] CDN: trunk Repo update failed - 23 error(s):

【代码】[!

2024-06-02 18:24:03 112

原创 iOS hitTest 机制用处之二-----使用pointInside方法

由上面的hittest机制可以知道,如果我们想扩大一个视图的点击范围,或者让一个超出父视图的子视图可以点击,我们既可以通过重写hittest方法实现,即在hittest 方法中去掉pointinside方法的判断,同时也可以通过重写pointinside 方法来实现。重写point inside ,如果是扩大点击范围,我们就判断新的rect是否包含point, 如果是子视图超出父视图可以点击,我们就将point转换为相对于子视图的point,然后判断是否在子视图中。扩大点击范围,或者是超出父视图可以点击,

2024-06-02 00:33:08 662

原创 iOS Hittest 机制和实际应用之一 hittest方法

hitTest的原理就是,当我们点击的时候,会触发 window的hittest方法,在该方法中会首先使用point inside方法判断点击的地方是否在window范围内,如果在的话,就倒序遍历姿子视图,然后将point转换为相对于子视图的point,然后在子视图再执行hittest,里面执行同样的流程。如果不在window范围内的话,就返回一个nil这里写下实现逻辑。

2024-06-01 11:21:56 471

原创 封装了一个iOS对号成功动画

对号动画完成之后,整个对号不见了,后来经过仔细调查,发现,是自己初始化 checkLayer的时候,将strokeEnd属设置为0了,注意,虽然我们是通过"strokeEnd"设置的动画,但是我们进行动画之后,并不会真正的改变layer.strokeEnd属性的值,所以我们初始化对号layer的时候,还是要将strokeEnd设置为1。路径的效果,这里注意,这个过程中过遇到过一个问题,就是。基本思路其实很简单,就是通过贝塞尔曲线画出路径,然后。

2024-05-31 22:03:07 445

原创 封装了一个iOS中间放大的collectionView layout

原理:就是首先确定一个放大和缩小系数和原大小对应的基准位置,然后根据距离每个布局属性到视图中心的距离和基准点到中心的距离的差距/基准点到中心的距离, 计算出每个布局属性的缩放系数。下面这一段是计算放大系数的核心逻辑。

2024-05-25 13:57:56 234

原创 pod 库发布脚本

repo_tag.sh 文件。repo_push.sh文件。

2024-05-25 13:40:56 358

原创 实现多读单写的原理

但是我们使用dispatch_syn的同步方法,为什么能达到多读的效果呢,就是因为,我们所说的同步执行,是指在同一线程里面来说的,当在多个线程中的时候,就没有同步的概念了。单读就不说了,因为栅栏函数就是有这样的特性,需要等之前的block执行完毕,之后的block需要等栅栏函数执行完毕。由此可见,在多线程中,syn并不能达到同步的效果。我们通过以下代码进行验证。

2024-05-23 08:39:15 169

原创 iOS 使用栅栏函数实现多读单写

在队列中,barrier块必须单独执行,不能与其他block并行。这只对并发队列有意义,并发队列如果发现接下来要执行的block是个barrier block,那么就一直要等到当前所有并发的block都执行完毕,才会单独执行这个barrier block代码块,等到这个barrier block执行完毕,再继续正常处理其他并发block。在上面的代码中,setter方法中使用了barrier block以后,对象的读取操作依然是可以并发执行的,但是写入操作就必须单独执行了。

2024-05-23 08:22:37 270

原创 封装了一个iOS环形加载动画和成功对号效果

的话,就会造成一个后果,就是,从七点到终点和走过的line中间的地方会有黑色,所以这里要特别注意,fillColor 设置成clearcolor。这里要注意一个地方,如果我们这里不设置。如果不设置的话,效果就是下面的样子。

2024-05-22 22:07:07 340

原创 封装了一个iOS水平方向瀑布流布局

当前最小的x 所在的列,其实原理和竖直方向上的是相同的。只不过这里记录的列是水平方向的,同时要记录下。思路就是和竖直方向上的瀑布流布局是一样的,子类layout 中的代码。父类layout中的代码。

2024-05-19 16:10:33 333

原创 iOS 中同步栅栏和异步栅栏的区别

只有一个区别,同步栅栏函数会阻塞当前线程,而一步栅栏函数不会阻塞当前线程,

2024-05-05 15:23:44 125

原创 iOS 实现视图遮罩效果

这时候,我们可以通过设置该视图layer.mask = layerb来实现,需要注意的是,这里的layerb必须要设置backgroundColor,渐变layer有colors,否则达不到效果。有时候,我们会遇到这种需求,只讲视图的某个部分展示出来。

2024-04-29 20:28:03 992

原创 iOS实现一个高性能的跑马灯

该跑马灯完全通过CATextLayer 实现,轻量级,并且通过。系统的位移动画实现滚动效果,实现更好的性能。

2024-04-28 22:33:20 1593

原创 iOS 获取到scrollView停止拖动时候的速度

在 - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset。方法中得到手势离开的时候的速度。

2024-04-28 21:36:52 908

原创 iOS 实现类似抖音翻页滚动效果

参考抖音的滚动效果,需要我们在结束拖动的时候,动画设置偏移量。

2024-04-28 08:28:32 740

原创 Unable to determine the platform for the `LiuBoapp` target.

今天再执行pod install 的时候, 遇到了这个问题。解决方法,将这一样代码放开就行了。后面发现podfile 中的。

2024-04-27 21:14:08 166

原创 drb requires Ruby version >= 2.7.0. The current ruby version is 2.6.10.210.

今天安装cocoa pod ,执行命令。

2024-04-27 20:40:59 558 4

原创 两个列表联动修改选中标题的时机

这个时候,我们有多种实现方案,其中一种就是在scrollVIewdidscroll 方法中执行,需要注意,这种实现从效果上没什么问题,但是在性能上是有多余的消耗的,因为scrolldidscroll是会很频繁的执行的,但是我们又不能在停止滚动的时候再执行,这个时候,就需要我们判断好一个时机,列表是标题,一个列表是分区的内容,我们滚动内容列表的时候,需要选中当前内容列表中对应的标题,我们可以设想一下,什么时候,选中的标题会有可能发生变化呢,就是内容列表的cell消失的时候,

2024-04-26 22:31:58 128

原创 iOS 设置 scrollview 停止拖动之后快速停止

【代码】iOS 设置 scrollview 停止拖动之后快速停止。

2024-04-26 21:55:46 106

原创 快速计算出分页scrollView当前展示第一个和最后一个子视图索引

当前正在展示的两个子视图的索引位置是。

2024-04-26 21:52:29 93

原创 获取一个数组中最小的值

【代码】获取一个数组中最小的值。

2024-04-25 21:30:08 122

原创 iOS 视觉橱窗效果

【代码】【无标题】

2024-04-18 11:29:57 366

原创 鸿蒙开发中使用lazyforeach 有图片闪烁的问题

经过测试,是lazyforeach中的第二个闭包中返回的字符串相等。

2024-04-15 08:23:41 159

原创 鸿蒙中实现引用本地js ,css 拼接html文本,并加载

/ 点击按钮时,通过loadData,加载HTML格式的文本数据。

2024-04-11 21:22:42 289 1

原创 记录鸿蒙开发中网页滚动和底部原生联动的问题

上面的的机制就是在符合条件的情况下,我是网页的滚动手势会被分发到我是原生的组件上,从而达到拖动网页的时候,滚动list。将嘴外层的list的事件进行分发,(网页和底部原生列表都是在list的listitem里面)场景:有这样一个页面,页面的上部分是一个大的网页,底部是一个原生的列表,所以这个时候网页和原生的滚动就出现了问题,所以我们就用到了鸿蒙的事件分发。由于鸿蒙系统的机制,网页的最大高度只能是屏幕高度,不能超出一屏幕高。其中的windowY 都是想等的,都是触摸点像对于屏幕原点的位置。

2024-04-11 21:20:00 231

原创 记录一个在鸿蒙网页中添加原生组件,并跟随滚动的效果实现

第三中情况下,我们设置原生组件在stack中的position为(组件在网页中的位置y - 网页的偏移量)有了这个思路之后,我们就可以写代码了。思路,我们将网页放在一个stack组件上面,然后将 需要嵌入到网页的原生组件也放到网页上。鸿蒙网页中,我们需要在某个位置添加一个原生的组件,比如视频或者音频。第二中情况下,我们将原生组件放到网页顶部(完全滑出网页的位置)第一中情况下,我们将原生组件放到网页组件的底部(超出网页)第一: 当原生组件位置超出网页最底部,第三:就是原生组件在网页中跟随网页滚动。

2024-04-11 21:07:40 260

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除