OC,oc語言

來源:互聯網
上載者:User

OC,oc語言
概述

  • 簡介

    • 核心動畫提供了一組非常強大的動畫API,通過該組API可以高效的實現絕大部分絢麗的動畫效果
  • 注意事項

    • 核心動畫的操作在子線程中執行,不會阻塞主線程
    • 核心動畫直接作用與CALayer對象上,不是UIView對象上
  • 核心動畫與UIView動畫的區別

    • 核心動畫不會改變控制項的frame屬性,顯示的只是一種假象
    • UIView動畫會改變控制項的frame屬性,顯示的是控制項真實地frame屬性
核心動畫類
  • 核心動畫相關類的關係圖

    • 此圖來源官方文檔,不知為何右下角不是CAKeyframeAnimation,而是協議。CAKeyframeAnimation為CAPropertyAnimation的可直接使用子類
  • CAAnimation與CAPropertyAnimation

    • 二者都是抽象類別,不可以直接使用,需要使用其子類
    • CAAnimation可直接使用的子類,

      • CAAnimationGroup,組動畫
      • CATransaction,轉場動畫
    • CAPropertyAnimation可直接使用的子類

      • CABasicAnimation,基本動畫
      • CAKeyframeAnimation,主要畫面格動畫
CAAnimation類
  • 3個重要的屬性

    • timingFunction(CAMediaTimingFunction *),速度控制函數
    • delegate(id),動畫代理
    • removedOnCompletion(BOOL),動畫執行完畢是否將其從圖層上移除
CAAnimation的代理方法
  • 注意

    • CAAnimation的代理方法是以NSObject分類的方式實現的,

  • 代理方法

    • 動畫開始時調用
    - (void)animationDidStart:(CAAnimation *)anim;
    • 動畫結束時調用
    - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag;
CAMediaTiming協議
  • 常用屬性中屬性

    • beginTime(CFTimeInterval),開始時間
    • duration(CFTimeInterval),單次動畫的執行時間
    • speed(float),動畫速度
    • timeOffset(CFTimeInterval),從時間位移量timeOffset開始執行動畫,並將timeOffset之前的動畫壓縮並拼接到尾部
    • repeatCount(float),重複次數
    • repeatDuration(CFTimeInterval),動畫的重複時間,與repeatCount兩者選擇時間最短者
    • autoreverses(BOOL),是否恢複到動畫開始狀態(以動畫的方式)
    • fillMode(NSString *),動畫的填充模式
動畫的填充模式
  • 注意

    • 若要使填充模式有效,通常設定動畫的removedOnCompletion屬性為NO
  • 4種模式

    • kCAFillModeForwards,動畫結束後,layer保持動畫結束的狀態
    • kCAFillModeBackwards,動畫加入到layer中,立即進入動畫初始狀態等待動畫開始執行
    • kCAFillModeBoth,同時具備以上兩種模式
    • kCAFillModeRemoved,動畫結束後,layer會恢複到原來的狀態
動畫的速度控制函數
  • kCAMediaTimingFunctionLinear,勻速
  • kCAMediaTimingFunctionEaseIn,緩慢進入,加速離開
  • kCAMediaTimingFunctionEaseOut,全速進入,減速到達目標地點
  • kCAMediaTimingFunctionEaseInEaseOut,緩慢進入,中途加速,減速到達目標地點
  • kCAMediaTimingFunctionDefault,預設速度,即kCAMediaTimingFunctionEaseInEaseOut

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.