簡單的UIView的Block動畫
首先來說一下這個UIView的Block動畫,這個動畫用著方便,還可以設置很多屬性,基本上我用的是最多的了.主要是好用.這個也是分幾個不同的方法,根據(jù)自己需求選擇方法.
1.UIView animateWithDuration:<#(NSTimeInterval)#> animations:<#^(void)animations#>
第一個方法,第一個參數(shù)是你這個動畫要播多久,我一般是0.25,不知道為什么就是想寫0.25,第二個參數(shù)是一個Block,看見Block啥也不想,先回車再說.這里面要寫你想干的事.我前面寫的隱藏TabBar和NavigationBar我自己寫的動畫就是這個,不過缺點那里面也說了,有需要的可以看一下.
2.UIView animateWithDuration:<#(NSTimeInterval)#> animations:<#^(void)animations#> completion:<#^(BOOL finished)completion#>
第二個方法,這個比第一個多了一個Block,看名字也知道,完成以后要干啥,打個比方,我放了一個動畫,然后我想在動畫結束以后,彈一個控制器出來,那這個完全滿足您的需要.前兩個參數(shù)是一樣的,動畫時長和要做的事情.后面是動畫完成以后要做的事情.
3.UIView animateWithDuration:<#(NSTimeInterval)#> delay:<#(NSTimeInterval)#> options:<#(UIViewAnimationOptions)#> animations:<#^(void)animations#> completion:<#^(BOOL finished)completion#>
第三種方法,這個方法參數(shù)就稍微有點多了,但是前兩個用過以后,你會發(fā)現(xiàn),第三個就是比第二個多了幾個參數(shù)而已,參數(shù)嘛,給就是了.Duration:時長 delay:多久以后才開始 option:你放動畫的時候要干嘛或者想怎樣 animations:要干的事情 completion:完成以后你想干嘛
這個delay沒啥要說的吧,就是我放了一個動畫,但是我不想立馬就播放,你給我等2s出來,就用這個,option,這個更簡單,我放動畫的時候吧,我還想用戶點一下動畫就沒了,我得響應用戶交互吧,那你就進去選UIViewAnimationOptionAllowUserInteraction這個,還有就是,我放動畫了,改變了一下布局,那你就得重新布局子控件了對吧,選UIViewAnimationOptionLayoutSubviews這個,布局子控件嘛.
4.UIView animateWithDuration:<#(NSTimeInterval)#> delay:<#(NSTimeInterval)#> usingSpringWithDamping:<#(CGFloat)#> initialSpringVelocity:<#(CGFloat)#> options:<#(UIViewAnimationOptions)#> animations:<#^(void)animations#> completion:<#^(BOOL finished)completion#>
這個第四種方法就比較牛逼了,前兩個參數(shù)我就不說了吧,一樣的,咱從這個Damping開始說,感覺這個方法好長啊,而且老子英語不好怎么破,完全不知道這啥玩意,OK,我建議記住一個單詞,就是前面的spring,春天,春天來了,你得發(fā)春,所以得動,那么這個參數(shù)就是動的意思,(Spring這里是彈簧的意思,Damping,阻尼,我的寫上,這個參數(shù)的真實意思是彈簧的阻尼設置)沒記錯的話范圍是0-1,你越接近1你的騷動越厲害...反之越差,在看Velocity,這個總認識吧,v不就是速度嗎,這里是指速率,看你騷動的速度,沒記錯的話也是0-1,(彈簧的速率設置)和上面一樣0---->1后面這幾個參數(shù)我就不說了 一樣的.
總結一下,UIView的Block動畫還是蠻好用的,能幫助大家實現(xiàn)動畫效果,根據(jù)需求的不同,選擇自己需要的動畫.
UIView的首尾式動畫
這個UIView的動畫,我是用的不多,因為一個字,費勁...我真沒發(fā)現(xiàn)有啥用,不過萬一別人有用呢,對吧,我也寫這里.
第一步:開啟動畫
兩個參數(shù),第一個是NSString的,明顯是你給動畫一個名字,是想在找這個動畫的時候方便,我不用,所以我一直寫nil,第二個上下文,沒啥用,也nil或者你寫null都行.
[UIView beginAnimations:nil context:nil];
是不是略熟悉的感覺,動畫的時長,就想寫0.25,不知道為什么.
[UIView setAnimationDuration:0.25];
又是熟悉的感覺,多久以后才放動畫1s
[UIView setAnimationDelay:1];
大爺,要重復嗎?來3次.
[UIView setAnimationRepeatCount:3];
中間寫需要動畫的代碼
改變一個控件的位置,從0,0 我移動到100,100
提交動畫
[UIView commitAnimations];
總結一下,這個動畫我用的真是不多,因為,我用這個實現(xiàn)的都可以用Block動畫來實現(xiàn).所以,我感覺還是Block更方便一些.
序列幀動畫
悠然記得上初中的時候,上微機課,半個學期,做了一個火柴人的動畫.一幀一幀的動畫.是我第一次用電腦做出來的東西.
先講解一下序列幀動畫,咱們要實現(xiàn)序列幀動畫得拿到一張張的圖片,你從服務器也好,放assets里面也好,其實就是看到的gif,只不過現(xiàn)在咱們需要把一張張的圖片連貫起來,實現(xiàn)gif效果
用的概率嘛,我感覺應該是一般,不多吧.
首先第一步,如果你是本地的,那么就得加載本地數(shù)據(jù).如果你是網(wǎng)絡的 你得網(wǎng)絡獲取數(shù)據(jù),不管怎么說,你獲取到的數(shù)據(jù)肯定是一堆圖片.把這些圖片存在數(shù)組里.
第二步,UIIimage里面有個方法,自己可以把一系列圖片變成一張動態(tài)圖.
第一個參數(shù)就是你存圖片的數(shù)組,第二個參數(shù)是你執(zhí)行的時間
UIImage animatedImageWithImages:<#(nonnull NSArray*)#> duration:<#(NSTimeInterval)#>
返回值是一個UIImage,接一下.然后你就能實現(xiàn)GIF了
本文不針對任何學術性研究,單純?yōu)榱藠蕵?看不慣我就直說,反正我不改.
寶劍鋒從磨礪出,梅花香自苦寒來.