iOS Core Animation(八)- 緩沖

CAMediaTimingFunction
  • KCAMediaTimingFunctionLinear 線性毅贮,勻速
  • KCAMediaTimingFunctionEaseIn 慢慢加速恢暖,突然停止
  • KCAMediaTimingFunctionEaseOut 全速開始华畏,減速停止
  • KCAMediaTimingFunctionEaseInEaseOut 加速開始勇吊,減速停止
  • KCAMediaTimingFunctionDefault 比KCAMediaTimingFunctionEaseInEaseOut稍慢的速度加速開始,減速停止
UIView動畫緩沖

options參數(shù)添加常量
UIViewAnimationOptionCurveEaseInOut
UIViewAnimationOptionCurveEaseIn
UIViewAnimationOptionCurveEaseOut
UIViewAnimationOptionCurveLinear

緩沖和關(guān)鍵幀動畫

CAKeyframeAnimation 可以添加values牡整,設(shè)置關(guān)鍵幀動畫钩乍,與之對應(yīng)的timingFunctions屬性可以為每次動畫添加不同的計(jì)時(shí)函數(shù),數(shù)組的個數(shù)需要時(shí)values數(shù)組個數(shù)減一画畅,因?yàn)樗枋龅氖敲恳粠g的動畫速度的函數(shù)砸琅。

自定義緩沖函數(shù)
 + (instancetype)functionWithControlPoints:(float)c1x :(float)c1y :(float)c2x :(float)c2y;
 - (instancetype)initWithControlPoints:(float)c1x :(float)c1y :(float)c2x :(float)c2y;

自己理解:動畫軌跡曲線是相對坐標(biāo)曲線。上述方法得到的軌跡曲線是以(0,0),(c1x,c1y),(c2x,c2y)(1,1)繪制的三次貝塞爾曲線轴踱。

復(fù)雜動畫曲線 - 基于關(guān)鍵幀的緩沖

values指定每個關(guān)鍵幀對應(yīng)的屬性變化
keyTimes指定每個關(guān)鍵幀的時(shí)間偏移
timingFunctions指定每個關(guān)鍵幀之間的緩沖動畫

流程自動化和基于定時(shí)器的動畫

value = (endValue - startValue) * time + startValue症脂,原理就是根據(jù)時(shí)間,依靠函數(shù)計(jì)算出每個時(shí)間點(diǎn)的value淫僻。

  • 總時(shí)間為1s诱篷,時(shí)間點(diǎn)和value的關(guān)系
  • 直接使用上述函數(shù)是一個勻速的變換過程
  • 通過一些函數(shù),將每一幀動畫的時(shí)間點(diǎn)轉(zhuǎn)換成value對應(yīng)位置的時(shí)間點(diǎn)嘁傀,從而獲取與之對應(yīng)的value,demo:https://github.com/warrenm/AHEasing
計(jì)算幀的持續(xù)時(shí)間

使用CADisplayLink视粮,由于我們不能夠計(jì)算出一幀真實(shí)的持續(xù)時(shí)間细办。我們可以通過每幀開始刷新的時(shí)候用CACurrentMediaTIme()記錄當(dāng)前時(shí)間,然后和上一幀記錄的時(shí)間比較蕾殴。

Run Loop模式

使用CADisplayLink的時(shí)候笑撞,我們需要指定一個run looprun loop mode,界面更新都需要在主線程執(zhí)行钓觉,對于run loop我們使用主線程的run loop茴肥。run loop mode是任務(wù)的優(yōu)先級。

  • NSDefaultRunLoopMode - 標(biāo)準(zhǔn)優(yōu)先級
  • NSRunLoopCommonModes - 高優(yōu)先級荡灾,如果動畫在一個高頻率下運(yùn)行瓤狐,則會造成一些別的類似定時(shí)器的任務(wù)或者類似滑動的其他iOS動畫暫停
  • UITrackingRunLoopMode - 用于UIScrollView和其他空間的動畫
  • 我們可以指定多個run loop mode,同時(shí)使用NSDefaultRunLoopModeUITrackingRunLoopMode批幌,可以使動畫不會被滑動打斷础锐,也不會被其他UIKit控件動畫影響性能
    self.timer = [CADisplayLink displayLinkWithTarget:self
                                             selector:@selector(step:)];
    [self.timer addToRunLoop:[NSRunLoop mainRunLoop]
                     forMode:UITrackingRunLoopMode];
    [self.timer addToRunLoop:[NSRunLoop mainRunLoop]
                     forMode:NSDefaultRunLoopMode];

上一篇:iOS Core Animation(七)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市荧缘,隨后出現(xiàn)的幾起案子皆警,更是在濱河造成了極大的恐慌,老刑警劉巖截粗,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件信姓,死亡現(xiàn)場離奇詭異鸵隧,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)意推,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門豆瘫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人左痢,你說我怎么就攤上這事靡羡。” “怎么了俊性?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵略步,是天一觀的道長。 經(jīng)常有香客問我定页,道長趟薄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任典徊,我火速辦了婚禮杭煎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘卒落。我一直安慰自己羡铲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布儡毕。 她就那樣靜靜地躺著也切,像睡著了一般。 火紅的嫁衣襯著肌膚如雪腰湾。 梳的紋絲不亂的頭發(fā)上雷恃,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機(jī)與錄音费坊,去河邊找鬼倒槐。 笑死,一個胖子當(dāng)著我的面吹牛附井,可吹牛的內(nèi)容都是我干的讨越。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼永毅,長吁一口氣:“原來是場噩夢啊……” “哼谎痢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起卷雕,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤节猿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滨嘱,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡峰鄙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了太雨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吟榴。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖囊扳,靈堂內(nèi)的尸體忽然破棺而出吩翻,到底是詐尸還是另有隱情,我是刑警寧澤锥咸,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布狭瞎,位于F島的核電站,受9級特大地震影響搏予,放射性物質(zhì)發(fā)生泄漏熊锭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一雪侥、第九天 我趴在偏房一處隱蔽的房頂上張望碗殷。 院中可真熱鬧,春花似錦速缨、人聲如沸锌妻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仿粹。三九已至,卻和暖如春引谜,著一層夾襖步出監(jiān)牢的瞬間牍陌,已是汗流浹背擎浴。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工员咽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贮预。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓贝室,卻偏偏與公主長得像,于是被迫代替她去往敵國和親仿吞。 傳聞我的和親對象是個殘疾皇子滑频,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

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