pop動(dòng)畫(huà)

最近在學(xué)習(xí)Facebook的pop框架域庇,所以就想整理一下屋谭,方便以后學(xué)習(xí)回憶耐亏。

首先說(shuō)一下,學(xué)習(xí)這一方面需要了解的一些內(nèi)容:CADisplayLink郭怪、CAShapeLayer支示、CALayer、CATransform3D鄙才、CGAffineTransform颂鸿、UIBezierPath、UIGestureRecognizer攒庵。


CADisplayLink

CADisplayLink是OC中使用的定時(shí)器的一種(其他2個(gè)分別是NStimer嘴纺、GCD),它允許應(yīng)用程序?qū)⑵淅L圖與顯示器的刷新率同步叙甸。

CADisplayLink的高達(dá)60FPS颖医,iOS設(shè)備的屏幕刷新頻率是固定的,CADisplayLink在正常情況下會(huì)在每次刷新結(jié)束都被調(diào)用裆蒸,精確度相當(dāng)高熔萧,基本和屏幕刷新是同步的。使用場(chǎng)合相對(duì)專(zhuān)一僚祷,適合做UI的不停重繪佛致,比如自定義動(dòng)畫(huà)引擎或者視頻播放的渲染。

NSTimer的精確度就顯得低了點(diǎn)辙谜,比如NSTimer的觸發(fā)時(shí)間到的時(shí)候俺榆,runloop如果在阻塞狀態(tài),觸發(fā)時(shí)間就會(huì)推遲到下一個(gè)runloop周期装哆。并且 NSTimer新增了tolerance屬性罐脊,讓用戶(hù)可以設(shè)置可以容忍的觸發(fā)的時(shí)間的延遲范圍。

<b>POP動(dòng)畫(huà)的流暢性就歸功于CADisplayLink高達(dá)60的FPS</b>


CALayer

  • 在創(chuàng)建UIView對(duì)象時(shí)蜕琴,UIView內(nèi)部會(huì)自動(dòng)創(chuàng)建一個(gè)層(即CALayer對(duì)象)萍桌,通過(guò)UIView的layer屬性可以訪問(wèn)這個(gè)層。當(dāng)UIView需要顯示到屏幕上時(shí)凌简,會(huì)調(diào)用drawRect:方法進(jìn)行繪圖上炎,并且會(huì)將所有內(nèi)容繪制在自己的層上,繪圖完畢后雏搂,系統(tǒng)會(huì)將層拷貝到屏幕上藕施,于是就完成了UIView的顯示。

  • 換句話說(shuō)凸郑,UIView本身不具備顯示的功能裳食,是它內(nèi)部的CALayer層才有顯示功能。

注意2個(gè)屬性:

  1. anchorPoint 錨點(diǎn):在當(dāng)前l(fā)ayer中取一點(diǎn)來(lái)計(jì)算改點(diǎn)在父視圖中的position芙沥。 默認(rèn)(0.5胞谈,0.5)

  2. position: 錨點(diǎn)在父視圖中的位置尘盼,可以來(lái)修改當(dāng)前view的frame。


CAShapeLayer

屬于CALayer的子類(lèi)烦绳,通常用它來(lái)畫(huà)一個(gè)layer層。

    UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(self.bounds.size.width / 2, self.bounds.size.height / 2) radius:self.bounds.size.width / 2 startAngle:0 endAngle:M_PI * 2  clockwise:YES];
    
    CAShapeLayer *bgcircular = [[CAShapeLayer alloc] init];
    bgcircular.path = path.CGPath;
    bgcircular.borderWidth = 5;
    bgcircular.strokeStart = 0;
    bgcircular.strokeEnd = 1;
    bgcircular.strokeColor = [UIColor grayColor].CGColor;
    bgcircular.fillColor = [UIColor clearColor].CGColor;
    [self.layer addSublayer:bgcircular];

UIBezierPath

用來(lái)輔助畫(huà)CAShapeLayer


CATransform3D

CATransform3D應(yīng)用于layer層配紫,相對(duì)于它邊界的錨點(diǎn)進(jìn)行縮放径密、位移、旋轉(zhuǎn)的變化躺孝。CATransform3D是居于4階矩陣而變化的享扔,所以需要了解關(guān)于矩陣的基本算法。

位移

/* Returns a transform that translates by '(tx, ty, tz)':
 * t' =  [1 0 0 0; 0 1 0 0; 0 0 1 0; tx ty tz 1]. */

CA_EXTERN CATransform3D CATransform3DMakeTranslation (CGFloat tx,
    CGFloat ty, CGFloat tz)
    CA_AVAILABLE_STARTING (10.5, 2.0, 9.0, 2.0);
縮放

/* Returns a transform that scales by `(sx, sy, sz)':
 * t' = [sx 0 0 0; 0 sy 0 0; 0 0 sz 0; 0 0 0 1]. */

CA_EXTERN CATransform3D CATransform3DMakeScale (CGFloat sx, CGFloat sy,
    CGFloat sz)
    CA_AVAILABLE_STARTING (10.5, 2.0, 9.0, 2.0);
旋轉(zhuǎn)

/* Returns a transform that rotates by 'angle' radians about the vector
 * '(x, y, z)'. If the vector has length zero the identity transform is
 * returned. */

CA_EXTERN CATransform3D CATransform3DMakeRotation (CGFloat angle, CGFloat x,
    CGFloat y, CGFloat z)
    CA_AVAILABLE_STARTING (10.5, 2.0, 9.0, 2.0);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末植袍,一起剝皮案震驚了整個(gè)濱河市惧眠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌于个,老刑警劉巖氛魁,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異厅篓,居然都是意外死亡秀存,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)羽氮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)或链,“玉大人,你說(shuō)我怎么就攤上這事档押“难危” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵令宿,是天一觀的道長(zhǎng)叼耙。 經(jīng)常有香客問(wèn)我,道長(zhǎng)掀淘,這世上最難降的妖魔是什么旬蟋? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮革娄,結(jié)果婚禮上倾贰,老公的妹妹穿的比我還像新娘。我一直安慰自己拦惋,他們只是感情好匆浙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著厕妖,像睡著了一般首尼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,208評(píng)論 1 299
  • 那天软能,我揣著相機(jī)與錄音迎捺,去河邊找鬼。 笑死查排,一個(gè)胖子當(dāng)著我的面吹牛凳枝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播跋核,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼岖瑰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了砂代?” 一聲冷哼從身側(cè)響起蹋订,我...
    開(kāi)封第一講書(shū)人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎刻伊,沒(méi)想到半個(gè)月后露戒,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡娃圆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年玫锋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讼呢。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡撩鹿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出悦屏,到底是詐尸還是另有隱情节沦,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布础爬,位于F島的核電站甫贯,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏看蚜。R本人自食惡果不足惜叫搁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望供炎。 院中可真熱鬧渴逻,春花似錦、人聲如沸音诫。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)竭钝。三九已至梨撞,卻和暖如春雹洗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背卧波。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工时肿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人港粱。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓嗜侮,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親啥容。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 在iOS中隨處都可以看到絢麗的動(dòng)畫(huà)效果顷霹,實(shí)現(xiàn)這些動(dòng)畫(huà)的過(guò)程并不復(fù)雜咪惠,今天將帶大家一窺iOS動(dòng)畫(huà)全貌。在這里你可以看...
    F麥子閱讀 5,110評(píng)論 5 13
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫(huà)效果淋淀,實(shí)現(xiàn)這些動(dòng)畫(huà)的過(guò)程并不復(fù)雜遥昧,今天將帶大家一窺ios動(dòng)畫(huà)全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,485評(píng)論 6 30
  • Core Animation Core Animation朵纷,中文翻譯為核心動(dòng)畫(huà)炭臭,它是一組非常強(qiáng)大的動(dòng)畫(huà)處理API,...
    45b645c5912e閱讀 3,028評(píng)論 0 21
  • 書(shū)寫(xiě)的很好袍辞,翻譯的也棒鞋仍!感謝譯者,感謝感謝搅吁! iOS-Core-Animation-Advanced-Techni...
    錢(qián)噓噓閱讀 2,296評(píng)論 0 6
  • “知識(shí)就是力量” 威创,“知識(shí)改變命運(yùn)”,1985年教育體制改革的春風(fēng)吹遍大江南北谎懦,全國(guó)開(kāi)啟了知識(shí)教育的轟轟烈烈的...
    崇真尚善閱讀 1,425評(píng)論 0 0