CATransition轉(zhuǎn)場動(dòng)畫

簡介

  • CATransition又稱轉(zhuǎn)場動(dòng)畫,是CAAnimation的子類,可以直接使用
  • 轉(zhuǎn)場動(dòng)畫主要用于為圖層提供移入/移出屏幕的動(dòng)畫效果
  • 轉(zhuǎn)場動(dòng)畫常見的應(yīng)用是UINavigationController

注意事項(xiàng)

  • 轉(zhuǎn)場動(dòng)畫的默認(rèn)過渡方式為淡出方式(kCATransitionFade)
  • 可以使用常量形式或字符串形式給轉(zhuǎn)場動(dòng)畫的type屬性賦值,如
    • kCATransitionPush,常量形式
    • @"push",字符串形式
  • 官方文檔中只提供了四種轉(zhuǎn)場動(dòng)畫過渡方式的常量
  • 動(dòng)畫的終點(diǎn)值必須大于等于起點(diǎn)值,否則沒有動(dòng)畫效果

轉(zhuǎn)場動(dòng)畫常用的屬性

  • type(NSString *),動(dòng)畫的過渡方式
  • subtype(NSString *),動(dòng)畫的過渡方向
  • startProgress(float),動(dòng)畫起點(diǎn),取值范圍為0~1,表示在整個(gè)動(dòng)畫中的比例
  • endProgress(float),動(dòng)畫終點(diǎn),取值范圍為0~1,表示在整個(gè)動(dòng)畫中的比例

CATransition使用

  1. 實(shí)例化CATransition,并設(shè)置相應(yīng)的轉(zhuǎn)場動(dòng)畫的key。
  2. 設(shè)置合適的轉(zhuǎn)場動(dòng)畫的屬性,比如動(dòng)畫周期、過渡方向、動(dòng)畫保持狀態(tài)等。
  3. 將動(dòng)畫效果添加到相應(yīng)的視圖的Layer圖層中

官方提供過渡方式

  • kCATransitionFade
  • kCATransitionMoveIn
  • kCATransitionPush
  • kCATransitionReveal

轉(zhuǎn)場動(dòng)畫的過渡方式(字符串表達(dá)形式)

  • fade
    • 交叉淡化過渡
    • 不支持過渡方向
    • 對應(yīng)的常量為kCATransitionFade
  • push
    • 新視圖把舊視圖推出去
    • 對應(yīng)的常量為kCATransitionPush
  • moveIn
    • 新視圖移到舊視圖上面
    • 對應(yīng)的常量為kCATransitionMoveIn
  • reveal
    • 將舊視圖移開顯示下邊的新視圖
    • 對應(yīng)的常量為kCATransitionReveal
  • cube
    • 立方體反轉(zhuǎn)效果
  • oglFlip
    • 上下左右反轉(zhuǎn)效果
  • suckEffect
    • 收縮效果,如一塊布被抽走
    • 不支持過渡方向
  • rippleEffect
    • 滴水效果
    • 不支持過渡方向
  • pageCurl
    • 向上翻頁效果
  • pageUnCurl
    • 向下翻頁效果
  • cameraIrisHollowOpen
    • 相機(jī)鏡頭打開效果
    • 不支持過渡方向
  • cameraIrisHollowClose
    • 相機(jī)鏡頭關(guān)閉效果
    • 不支持過渡方向

轉(zhuǎn)場動(dòng)畫的過渡方向

  • kCATransitionFromRight,右
  • kCATransitionFromLeft,左
  • kCATransitionFromTop,上
  • kCATransitionFromBottom,下

簡單實(shí)例

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    static int i = 1;
    i++;
    if (i == 4) {
        i = 1;
    }
    NSString *imageName = [NSString stringWithFormat:@"%d",i];
    self.imageView.image = [UIImage imageNamed:imageName];
    // 轉(zhuǎn)場動(dòng)畫
    CATransition *anim = [CATransition animation];
    // 轉(zhuǎn)場動(dòng)畫類型
    anim.type = @"fade";
    // 時(shí)長
    anim.duration = 1.0;

    [self.imageView.layer addAnimation:anim forKey:nil];
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容