這篇文章給大家分享的是有關(guān)iOS怎么實(shí)現(xiàn)序列動(dòng)畫的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
10余年的臺(tái)兒網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。網(wǎng)絡(luò)營銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整臺(tái)兒建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“臺(tái)兒網(wǎng)站設(shè)計(jì)”,“臺(tái)兒網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
前言
我們的在做動(dòng)效中經(jīng)常會(huì)有這樣的需求,A動(dòng)畫執(zhí)行完,執(zhí)行B動(dòng)畫,B動(dòng)畫執(zhí)行完執(zhí)行C動(dòng)畫這樣的序列,比如如下效果:
iOS 10之前,我們可能這樣實(shí)現(xiàn)這個(gè)動(dòng)畫序列,實(shí)際上可能你現(xiàn)在的代碼就是這樣寫的:
UIView.animate()
提供了一個(gè)完成block回調(diào),我們可以用它來觸發(fā)下一個(gè)動(dòng)畫。這樣做,我們可以實(shí)現(xiàn)這個(gè)動(dòng)畫。正如你可以看到的,這坨代碼的主要缺點(diǎn)是丑陋,幾乎沒有可讀性。
UIViewPropertyAnimator
iOS10引入了UIViewPropertyAnimator ,基于篇幅原因,這里不對(duì)其做詳細(xì)介紹,如果需要讀者請(qǐng)自行補(bǔ)腦。我關(guān)心的是如何提高這類多層嵌套代碼的可讀性,通過UIViewPropertyAnimator,前面的代碼片斷將成為:
通過上面的方式我們可以將動(dòng)畫定義分離開來,這樣不僅有更好的可讀性,還可以解耦。這樣已經(jīng)比開始的代碼漂亮多了,但是我們還可以寫的更好...
Reactive animation chaining
我是一個(gè)rx的重度用戶,我首先想到的是:是否有辦法讓UIViewPropertyAnimation與RxSwift兼容?
大概思路是觀察一個(gè)動(dòng)畫的狀態(tài),然后觸發(fā)下一個(gè),接下來我們通過擴(kuò)展UIViewPropertyAnimation來實(shí)現(xiàn) 擴(kuò)展會(huì)有封裝UIViewPropertyAnimator的“startAnimation”和“addCompletion”機(jī)制。它將返回的可觀察的狀態(tài)。但是為了簡單起見,我們假定一個(gè)動(dòng)畫只能“complete”,沒有“stream”管理(如onNext、onSubscribed onDisposed等等)。
Talk is cheap,Show me the code
上面動(dòng)畫擴(kuò)展返回一個(gè) Completable狀態(tài) ,訂閱時(shí),將開始動(dòng)畫和添加完成回調(diào),發(fā)送一個(gè)“.completed”事件。目的很簡單:當(dāng)完成動(dòng)畫,開始執(zhí)行下一個(gè)開始動(dòng)畫,代碼如下。
按理說寫到這里應(yīng)該結(jié)束了,但是可能有讀者說,我們并沒有引入RX,沒錯(cuò)你的代碼很優(yōu)雅,然而對(duì)我們來說成本有點(diǎn)高,那么就繼續(xù)講講其他的方案,總有一款適合你。
自定義操作符
我們都知道Swift有很cool的特性:自定義操作符,我們總希望把代碼些簡單,讓別的同事看自己的代碼時(shí)一目了然,都不需注釋就懂什么意思,比如:
animation1 ~> animation2 ~> animation3 ~> animation4
很簡單,自定義~>操作符如下:
接下來使用這個(gè)操作符實(shí)現(xiàn)動(dòng)畫
好了,自此關(guān)于如何避免寫出丑陋的嵌套動(dòng)畫代碼寫完了,enjoy
感謝各位的閱讀!關(guān)于“iOS怎么實(shí)現(xiàn)序列動(dòng)畫”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
本文標(biāo)題:iOS怎么實(shí)現(xiàn)序列動(dòng)畫
本文鏈接:http://chinadenli.net/article4/giipie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、網(wǎng)頁設(shè)計(jì)公司、企業(yè)網(wǎng)站制作、微信小程序、App設(shè)計(jì)、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)