最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS如何優(yōu)雅地實現(xiàn)序列動畫詳解

 更新時間:2018年12月12日 09:51:59   作者:老峰  
這篇文章主要給大家介紹了關(guān)于iOS如何優(yōu)雅地實現(xiàn)序列動畫的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

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


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


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

UIViewPropertyAnimator

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


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

Reactive animation chaining

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

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

Talk is cheap,Show me the code


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

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

自定義操作符

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

animation1 ~> animation2 ~> animation3 ~> animation4

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


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


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

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • ios開發(fā)中時間轉(zhuǎn)換的方法集錦

    ios開發(fā)中時間轉(zhuǎn)換的方法集錦

    這篇文章主要介紹了ios開發(fā)中時間轉(zhuǎn)換的方法集錦,需要的朋友可以參考下
    2015-05-05
  • iOS實現(xiàn)app間跳轉(zhuǎn)功能

    iOS實現(xiàn)app間跳轉(zhuǎn)功能

    這篇文章主要為大家詳細介紹了iOS實現(xiàn)app間跳轉(zhuǎn)功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • iOS App中實現(xiàn)播放音效和音樂功能的簡單示例

    iOS App中實現(xiàn)播放音效和音樂功能的簡單示例

    這篇文章主要介紹了iOS App中實現(xiàn)播放音效和音樂功能的簡單示例,示例代碼為傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2016-03-03
  • iOS中NSNumberFormatter的介紹與用法

    iOS中NSNumberFormatter的介紹與用法

    NSNumberFormatter 應(yīng)該可以滿足你對數(shù)據(jù)形式的一般需求,值得了解一下,下面這篇文章主要給大家介紹了關(guān)于iOS中NSNumberFormatter的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-09-09
  • 簡介iOS開發(fā)中應(yīng)用SQLite的模糊查詢和常用函數(shù)

    簡介iOS開發(fā)中應(yīng)用SQLite的模糊查詢和常用函數(shù)

    這篇文章主要介紹了iOS開發(fā)中應(yīng)用SQLite的模糊查詢和常用函數(shù),SQLite是一個可作嵌入式的數(shù)據(jù)庫非常適合小型應(yīng)用使用,需要的朋友可以參考下
    2015-12-12
  • iOS把圖片緩存到本地的幾種方法(總結(jié))

    iOS把圖片緩存到本地的幾種方法(總結(jié))

    下面小編就為大家分享一篇iOS把圖片緩存到本地的幾種方法總結(jié),具有很的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • ios 實現(xiàn)倒計時的兩種方式

    ios 實現(xiàn)倒計時的兩種方式

    這篇文章主要介紹了ios實現(xiàn)倒計時的兩種方式,第一種方式使用NSTimer來實現(xiàn),第二種方式使用GCD來實現(xiàn)。具體內(nèi)容詳情大家參考下本文
    2017-01-01
  • iOS實現(xiàn)聊天輸入框功能

    iOS實現(xiàn)聊天輸入框功能

    大家都經(jīng)常使用微信聊天功能,在沒事的時候就會想微信聊天輸入框的實現(xiàn)過程,很無聊吧。今天小編抽空給大家分享iOS實現(xiàn)聊天輸入框功能,感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-02-02
  • iOS實現(xiàn)背景高斯模糊效果

    iOS實現(xiàn)背景高斯模糊效果

    這篇文章主要介紹了iOS實現(xiàn)背景高斯模糊效果,代碼簡單易懂,非常不錯,需要的朋友參考下吧
    2016-12-12
  • iOS開發(fā)之AssetsLibrary框架使用詳解

    iOS開發(fā)之AssetsLibrary框架使用詳解

    這篇文章主要介紹了iOS開發(fā)之AssetsLibrary框架使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09

最新評論

天津市| 平顺县| 桓台县| 全椒县| 定陶县| 乌鲁木齐县| 张家港市| 翁牛特旗| 金门县| 桂林市| 枞阳县| 天等县| 金山区| 高邑县| 郑州市| 五家渠市| 泸水县| 光山县| 汽车| 茶陵县| 赤城县| 湖南省| 阿瓦提县| 察哈| 遂溪县| 原平市| 棋牌| 松原市| 嘉定区| 土默特右旗| 通山县| 营山县| 老河口市| 长汀县| 蛟河市| 阿鲁科尔沁旗| 浠水县| 广丰县| 乐清市| 马尔康县| 沿河|