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