成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

iOS怎么實現(xiàn)序列動畫-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)iOS怎么實現(xiàn)序列動畫的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

我們提供的服務(wù)有:網(wǎng)站設(shè)計、成都做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、寬城ssl等。為上千多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的寬城網(wǎng)站制作公司

前言

我們的在做動效中經(jīng)常會有這樣的需求,A動畫執(zhí)行完,執(zhí)行B動畫,B動畫執(zhí)行完執(zhí)行C動畫這樣的序列,比如如下效果:

iOS怎么實現(xiàn)序列動畫

iOS 10之前,我們可能這樣實現(xiàn)這個動畫序列,實際上可能你現(xiàn)在的代碼就是這樣寫的:

iOS怎么實現(xiàn)序列動畫

UIView.animate()提供了一個完成block回調(diào),我們可以用它來觸發(fā)下一個動畫。這樣做,我們可以實現(xiàn)這個動畫。正如你可以看到的,這坨代碼的主要缺點(diǎn)是丑陋,幾乎沒有可讀性。

UIViewPropertyAnimator

iOS10引入了UIViewPropertyAnimator ,基于篇幅原因,這里不對其做詳細(xì)介紹,如果需要讀者請自行補(bǔ)腦。我關(guān)心的是如何提高這類多層嵌套代碼的可讀性,通過UIViewPropertyAnimator,前面的代碼片斷將成為:

iOS怎么實現(xiàn)序列動畫

通過上面的方式我們可以將動畫定義分離開來,這樣不僅有更好的可讀性,還可以解耦。這樣已經(jīng)比開始的代碼漂亮多了,但是我們還可以寫的更好...

Reactive animation chaining

我是一個rx的重度用戶,我首先想到的是:是否有辦法讓UIViewPropertyAnimation與RxSwift兼容?

大概思路是觀察一個動畫的狀態(tài),然后觸發(fā)下一個,接下來我們通過擴(kuò)展UIViewPropertyAnimation來實現(xiàn) 擴(kuò)展會有封裝UIViewPropertyAnimator的“startAnimation”和“addCompletion”機(jī)制。它將返回的可觀察的狀態(tài)。但是為了簡單起見,我們假定一個動畫只能“complete”,沒有“stream”管理(如onNext、onSubscribed onDisposed等等)。

Talk is cheap,Show me the code

iOS怎么實現(xiàn)序列動畫

上面動畫擴(kuò)展返回一個 Completable狀態(tài) ,訂閱時,將開始動畫和添加完成回調(diào),發(fā)送一個“.completed”事件。目的很簡單:當(dāng)完成動畫,開始執(zhí)行下一個開始動畫,代碼如下。

iOS怎么實現(xiàn)序列動畫

按理說寫到這里應(yīng)該結(jié)束了,但是可能有讀者說,我們并沒有引入RX,沒錯你的代碼很優(yōu)雅,然而對我們來說成本有點(diǎn)高,那么就繼續(xù)講講其他的方案,總有一款適合你。

自定義操作符

我們都知道Swift有很cool的特性:自定義操作符,我們總希望把代碼些簡單,讓別的同事看自己的代碼時一目了然,都不需注釋就懂什么意思,比如:

animation1 ~> animation2 ~> animation3 ~> animation4

很簡單,自定義~>操作符如下:

iOS怎么實現(xiàn)序列動畫

接下來使用這個操作符實現(xiàn)動畫

iOS怎么實現(xiàn)序列動畫

好了,自此關(guān)于如何避免寫出丑陋的嵌套動畫代碼寫完了,enjoy

感謝各位的閱讀!關(guān)于“iOS怎么實現(xiàn)序列動畫”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站jinyejixie.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當(dāng)前文章:iOS怎么實現(xiàn)序列動畫-創(chuàng)新互聯(lián)
分享地址:http://jinyejixie.com/article22/disecc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、企業(yè)網(wǎng)站制作、服務(wù)器托管、電子商務(wù)ChatGPT、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
甘洛县| 滦平县| 上虞市| 白沙| 乌兰浩特市| 绩溪县| 南康市| 仪陇县| 广东省| 洪江市| 阳江市| 剑河县| 宁德市| 吉林市| 历史| 陕西省| 革吉县| 铜陵市| 沁源县| 揭东县| 保定市| 武宁县| 左贡县| 珲春市| 奉节县| 邮箱| 金坛市| 会同县| 安多县| 巩留县| 安平县| 建昌县| 岱山县| 高邮市| 石台县| 无锡市| 莱西市| 含山县| 大石桥市| 和林格尔县| 宝丰县|