漫画源码,带采集(骚操作:如何避免写出丑陋的嵌套动画代码)

wufei123 发布于 2023-11-28 阅读(579)

我们的在做动效中经常会有这样的需求,A动画执行完,执行B动画,B动画执行完执行C动画这样的序列,比如如下效果:

iOS 10之前,我们可能这样实现这个动画序列,实际上可能你现在的代码就是这样写的:

UIView.animate()提供了一个完成block回调,我们可以用它来触发下一个动画这样做,我们可以实现这个动画正如你可以看到的,这坨代码的主要缺点是丑陋,几乎没有可读性UIViewPropertyAnimator。

iOS10引入了UIViewPropertyAnimator ,基于篇幅原因,这里不对其做详细介绍,如果需要读者请自行补脑我关心的是如何提高这类多层嵌套代码的可读性,通过UIViewPropertyAnimator,前面的代码片断将成为:。

通过上面的方式我们可以将动画定义分离开来,这样不仅有更好的可读性,还可以解耦这样已经比开始的代码漂亮多了,但是我们还可以写的更好...Reactive animation chaining我是一个rx的重度用户,我首先想到的是:是否有办法让UIViewPropertyAnimation与RxSwift兼容?。

大概思路是观察一个动画的状态,然后触发下一个,接下来我们通过扩展UIViewPropertyAnimation来实现扩展会有封装UIViewPropertyAnimator的“startAnimation”和“addCompletion”机制。

它将返回的可观察的状态但是为了简单起见,我们假定一个动画只能“complete”,没有“stream”管理(如onNext、onSubscribed onDisposed等等)Talk is cheap,Show me the code

上面动画扩展返回一个Completable状态,订阅时,将开始动画和添加完成回调,发送一个“.completed”事件。目的很简单:当完成动画,开始执行下一个开始动画,代码如下。

按理说写到这里应该结束了,但是可能有读者说,我们并没有引入RX,没错你的代码很优雅,然而对我们来说成本有点高,那么就继续讲讲其他的方案,总有一款适合你自定义操作符我们都知道Swift有很cool的特性:自定义操作符,我们总希望把代码些简单,让别的同事看自己的代码时一目了然,都不需注释就懂什么意思,比如:。

animation1 ~> animation2 ~> animation3 ~> animation4很简单,自定义~>操作符如下:

接下来使用这个操作符实现动画

好了,自此关于如何避免写出丑陋的嵌套动画代码写完了,enjoy--END--#iOSTips 周报#1|2018-12-10上周六首次尝试发周报,没想到竟然用了要收费的短链接,真的尴尬后台很多问号脸,这里重发一下,微信公众号不支持外链,

点击阅读原文可跳转对应的外链【资讯】App Store Connect will be on vacation December 23 to 27 (Pacific Time)每年惯例,Appstore将在12月23至27日停止App审核。

Flutter 1.0 正式版: Google 的便携 UI 工具包Flutter 是 Google 为您打造的 UI 工具包,帮助您通过一套代码同时在 iOS 和 Android 上构建媲美原生体验的精美应用!

连续2周免费榜第一的ZEPETO刷爆朋友圈一个ins捏脸软件最近突然爆红,这是一款可自定义捏人偶制作表情的客户端应用,叫做《Zepeto》,这款软件能让平面变立体,将虚拟变实物,全新视角,多样玩法,神奇体验。

【热文】iOS App冷启动治理:来自美团外卖的实践冷启动时长是App性能的重要指标,作为用户体验的第一道“门”,直接决定着用户对App的第一印象,本文分享了美团iOS端冷启动的治理经验Implementing features with ReactiveFeedback。

本文作者通过一个实例演示来介绍他们团队写的单向数据流应用框架 ReactiveFeedback由于作者所在团队用的是 ReactiveCocoa,所以他们就基于 ReactiveSwift 自己实现了一套类似 RxFeedback 的框架。

The Right Way to Architect iOS App with Swift来自limboy大神介绍了对iOS 架构的看法与自己的思考【源码】RichTextViewiOS Text View (UIView) that Properly Displays LaTeX, HTML, Markdown, and YouTube/Vimeo Links

Marionette🧸 Swift library which provides a high-level API to control a WKWebView

亲爱的读者们,感谢您花时间阅读本文。如果您对本文有任何疑问或建议,请随时联系我。我非常乐意与您交流。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

河南中青旅行社综合资讯 奇遇综合资讯 盛世蓟州综合资讯 综合资讯 游戏百科综合资讯 新闻82696