【iOS】如何在UICollection中实现特殊翻页动画效果
需求:
实现类似下列的动画效果,要求,左右可以滚动UICollection浏览,向上滑动可以把当前图片丢进垃圾桶
特殊UICollection动画效果
技术点:
需要结合UIScrollView回调跟UIPanGestureRecognizer手势来实现
具体实现方法为:
1、对应的UICollection注册UIPanGestureRecognizer监听
2、在监听回调中判断三个状态
.began
.changed
.ended
其中.began
我们添加两个View到当前画面上,一个是底部背景backgroundImage
,一个是当前UICollectionView的画面screenImage
,并设置为不可见,这是重点,不然会有频闪出现!
在.changed
中
1)我们判断当前是否是左右滑动的,也就是y是否是>0(后面可以根据具体来调节这个参数),如果满足,首先将UIPanGestureRecognizer设置为不可用,然后移除掉之前的backgroundImage
跟screenImage
正式进入左右划逻辑,判断如果左滑x是大于>20还是<-20来判断是左滑还是右滑!斌给钱break掉
2)如果判断y是<0,说明进入了上滑,这时候需要将backgroundImage
跟screenImage
设置为可见,并且操作screenImage
进行转换,具体代码可能为
let scale = 0.7 - abs(y)/kSHeight
tempImage.transform = CGAffineTransform(translationX: x*(1/scale), y: y*(1/scale)).concatenating(CGAffineTransform(scaleX: scale, y: scale)).concatenating(CGAffineTransform(rotationAngle: .pi/4*(0.7-scale)))
0.7这个系数可以根据自己来调节,上述代码可以实现偏离角度+上移+缩小,实现一个向上收纳的效果
在.ended
中,我们首先判断是否同时满足x > 20 && y < -40
,可以认为他被移动到了右上角,然后进行丢入垃圾桶动画操作,并且移除掉backgroundImage
跟screenImage
其中UIPanGestureRecognizer什么时候设置为可用呢?
在UIScrollView的scrollViewDidEndDecelerating回调中,我们只需要重新设置UIPanGestureRecognizer可用就行!
至此,核心逻辑就说明完毕了。
其中有一些需要注意的点
比如如果是视频,怎么获取到视频的截图?
比如如何最大程度的减少发生频闪的情况?
比如具体系数怎么调整才能最大最优雅的实现滚动跟滑动?
【iOS】如何在UICollection中实现特殊翻页动画效果相关推荐
- h5制作app,处理跳转翻页动画效果及android返回键路由跳转问题
在h5制作的app中,设计路由跳转及跳转翻页动画是最必要的.其中有很多需要注意的问题,分享下小编的处理方式~ 一.翻页效果 首先,跳转翻页动画的监控,因为小编是用vue学的,所以在app.vue中监控 ...
- windows phone水平滑动翻页动画效果
转自:http://www.cnblogs.com/poorpan/archive/2012/04/23/2466413.html 大家看windows phone上的应用,很多都用到了这种效果 ,想 ...
- iOS动效-利用CATransform3D实现翻页动画效果
从事iOS开发已经有一段时间了,之前一直忙于工作,几乎很少有时间写一些东西来对自己掌握的技术进行一下总结,现在想想,有些后悔,因为之前在遇见问题的时候或者学习新技术的时候都是在翻看他人的博客或者查看苹 ...
- jquery css3问卷答题卡翻页动画效果
这个选项调查的特效以选项卡的形式,每答完一道题目自动切换到下一条,颇具特色.使用jQuery和CSS3,适合HTML5浏览器. 效果展示 http://hovertree.com/texiao/jqu ...
- android 3d翻页动画,使用XML在Android中创建3D翻页动画
这是答案,虽然它只适用于3.0及以上版本. 1)创建一个名为"animator"的新资源文件夹. 2)创建一个新的.xml文件,我将其称为"翻转".使用以下xm ...
- Android中实现滑动翻页—使用ViewFlipper
有一些场景,我们需要向用户展示一系列的页面.比如我们正在开发一个看漫画的应用,可能就需要向用户展示一张一张的漫画图片,用户使用手指滑动屏幕,可以在前一幅漫画和后一幅漫画之间切换.这个时候ViewFli ...
- 如何在 Flutter 中禁用默认的 Widget 飞溅效果
如何在 Flutter 中禁用默认的 Widget 飞溅效果 默认情况下,许多 Flutter Material Design 小部件在被选中时会显示飞溅效果. 这适用于IconButton,InkW ...
- 如何在ps中添加图片上的塑料布效果
1.塑料滤镜能够产生一种在照片表面蒙上一层塑料布的效果,接下来讲讲如何在ps中添加图片上的塑料布效果.打开PS,把素材导入PS中,Ctrl+J,复制一层图层,选择钢笔工具,将途中人物腰部一下的裙摆抠出 ...
- android sdio 时钟 ios-clock,【ios学习】OneClock的翻页时钟效果是如何实现的
OneClock目前的三个表盘中用户最喜欢的是翻页时钟.翻页效果是表盘的核心,也是我花时间调试最久的细节.经过7次的产品迭代,终于调整到了一个合适的效果. 实现这个动效的方法只需用到CABasicAn ...
最新文章
- python3 collections模块_Python3之内建模块collections
- Rethinking场景分析中的空间池化 | Strip Pooling(CVPR2020,何凯明)
- 重温目标检测--YOLO v2 -- YOLO9000
- http协议报文体_HTTP协议详解
- Android Studio同步失败设置代理,Android Studio如何设置代理?
- PHP的instanceof作用
- Python中lambda表达式的优缺点及使用场景
- c++游戏代码坦克大作战_一红一蓝多种模式的双人小游戏:红蓝大作战
- linux nls_lang oracle,linux操作系统环境变量LANG和NLS_LANG的区别
- java 方法 示例_Java语言环境getVariant()方法与示例
- 蓝桥杯第七届国赛JAVA真题----平方末尾
- 建立局域网计算机应安装,两台电脑如何建立局域网
- DealComment (注释处理工具)
- Activity 的启动模式
- css3动态渐变动画
- 手机无线如何共享给台式计算机,台式电脑怎样共享网络给手机
- Pale Moon 苍月浏览器 24.0.1 发布
- 各大电商历史价格json后端接口
- 蓝牙相关Profiles
- 干货来袭!!!3天0基础Python实战项目快速学会人工智能必学数学基础全套(含源码)(第1天)线性代数篇:矩阵、向量及python实战
热门文章
- Spring5学习笔记——day03
- paddleOCR SystemError: (Fatal) Blocking queue is killed because the data reader raises an exception.
- 深圳国家高新技术企业认定优惠政策及申报要求汇总,奖励30万
- java语言编写防沉迷系统_-基于android的网购防沉迷系统设计的开发与实现.doc
- 东方财富代码选股_“8+1”带你看东方财富
- Java之获取本机所有IP
- sendto python_Python sendto似乎没有发送
- Logistic回归-机器学习
- Matplotlib绘图的简单使用(2)
- 加菲猫的经典语录~~~