【iOS】CATransition動(dòng)畫(huà)簡(jiǎn)單使用

漸變動(dòng)畫(huà).gif
  • 1 . 閑來(lái)無(wú)聊,研究了下CATransition動(dòng)畫(huà)贩虾,發(fā)現(xiàn)原來(lái)幅狮,還是很實(shí)用,想了下決定試著看能否封裝下,最后在使用幾種方法后,最后使用類(lèi)擴(kuò)展(類(lèi)別)的方法:
Paste_Image.png

-2.在CATransition這個(gè)實(shí)體中灼舍,蘋(píng)果有提供我們多個(gè)動(dòng)畫(huà),CATransition的type屬性
1.#define定義的常量
kCATransitionFade 交叉淡化過(guò)渡
kCATransitionMoveIn 新視圖移到舊視圖上面
kCATransitionPush 新視圖把舊視圖推出去
kCATransitionReveal 將舊視圖移開(kāi),顯示下面的新視圖
2.用字符串表示
pageCurl 向上翻一頁(yè)
pageUnCurl 向下翻一頁(yè)
rippleEffect 滴水效果
suckEffect 收縮效果涨薪,如一塊布被抽走
cube 立方體效果
oglFlip 上下翻轉(zhuǎn)效果
因此骑素,我在類(lèi)的擴(kuò)展中定義以下幾種枚舉類(lèi)型:

#import <UIKit/UIKit.h>
/**
 *  SX動(dòng)畫(huà)擴(kuò)展:
 */
@interface UIView (SXAnimation)
/**
 *  動(dòng)畫(huà)類(lèi)型
 */
typedef enum{
    
    SXpageCurl,               // 向上翻一頁(yè)
    SXpageUnCurl,              //向下翻一頁(yè)
    SXrippleEffect,            //波紋
    SXsuckEffect,              //吸收
    SXcube,                    //立方體
    SXoglFlip,                 //翻轉(zhuǎn)
    SXcameraIrisHollowOpen,    //鏡頭開(kāi)
    SXcameraIrisHollowClose,   //鏡頭關(guān)
    SXfade,                    //翻頁(yè)
    SXmovein,                  //彈出
    SXpush                     //推出
    
}AnimationType;

/**
 *  動(dòng)畫(huà)方向
 */
typedef enum{
    SXleft,                 //左
    SXright,                //右
    SXtop,                  //頂部
    SXbottom,               //底部
    SXmiddle 
    
}Direction;

-3. 最終再擴(kuò)展一個(gè)類(lèi)別方法,用于設(shè)置我們想要的某些動(dòng)畫(huà)刚夺。

/**
 *  動(dòng)畫(huà)設(shè)置
 *
 *  @param animation    動(dòng)畫(huà)
 *  @param durationTime 動(dòng)畫(huà)時(shí)間
 *  @param subtype      過(guò)渡方向
 */
- (void)setAnimationWithType:(AnimationType)animation
                    duration:(float)durationTime
                   directionSubtype:(Direction)subtype;

-4 .實(shí)現(xiàn)部分献丑,還是很簡(jiǎn)單的

- (void)setAnimationWithType:(AnimationType)animation
                    duration:(float)durationTime
            directionSubtype:(Direction)subtype
{
    //CATransition實(shí)體
    CATransition* ani=[CATransition animation];
    //動(dòng)畫(huà)時(shí)間:
    ani.duration = durationTime;
    //選擇動(dòng)畫(huà)過(guò)渡方向:
    switch (subtype) {
        case SXleft:
            ani.subtype = kCATransitionFromLeft;
            break;
        case SXright:
            ani.subtype = kCATransitionFromRight;
            break;
        case SXtop:
            ani.subtype = kCATransitionFromTop;
            break;
        case SXbottom:
            ani.subtype = kCATransitionFromBottom;
            break;
            case SXmiddle:
            ani.subtype = kCATruncationMiddle;
            break;
        default:
            break;
    }
    //選擇動(dòng)畫(huà)效果:
    switch (animation)
 {
        case SXpageCurl:
        {
            ani.type = @"pageCurl";
        }
            break;
        case SXpageUnCurl:
        {
            ani.type = @"pageUnCurl";
        }
            break;
        case SXrippleEffect:
        {
            ani.type = @"rippleEffect";
        }
            break;
        case SXsuckEffect:
        {
            ani.type = @"suckEffect";
        }
            break;
        case SXcube:
        {
            ani.type = @"cube";
        }
            break;
        case SXcameraIrisHollowOpen:
        {
            ani.type = @"cameraIrisHollowOpen";
        }
            break;
        case SXoglFlip:
        {
            ani.type = @"oglFlip";
        }
            break;
        case SXcameraIrisHollowClose:
        {
            ani.type = @"cameraIrisHollowClose";  
        }
        break;
        case SXmovein:
            ani.type = kCATransitionMoveIn;
            break;
        case SXpush:
            ani.type = kCATransitionPush;
            break;
        case SXfade:
            ani.type = kCATransitionFade;
            break;
             default:
            break;  
      } 
        //動(dòng)畫(huà)加到圖層上
    [self.layer addAnimation:ani forKey:nil];
    }
  • 5.最后是,該如何使用侠姑? ---我在這里用了一個(gè)滾動(dòng)視圖做的示例:
@interface ViewController ()<UIScrollViewDelegate>
{
    //動(dòng)畫(huà)類(lèi)型
    AnimationType Type;
    //輪播圖
    UIScrollView * scroll ;
    
}
an3.gif
- (void)viewDidLoad {
    [super viewDidLoad];

    Type = SXrippleEffect;
    
    scroll = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 100, ScreenWidth, 200)];
    scroll.contentSize = CGSizeMake(ScreenWidth*8, 200);
    scroll.pagingEnabled = YES;
    scroll.delegate = self;
    
    for (NSInteger i = 0; i<8; i++)
    {
       UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(ScreenWidth*i, 0, ScreenWidth, 200)];
        
        imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%02ld.jpg",i+1]];
        
        [scroll addSubview:imageView];
    }
    [self.view addSubview:scroll];
    
    
}

6.在滾動(dòng)視圖中代理方法中設(shè)置想要的動(dòng)畫(huà)效果:

//將要拖拽
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    
    //調(diào)用設(shè)置動(dòng)畫(huà)
     [scroll setAnimationWithType:Type duration:1.0 directionSubtype:SXright];
   
}
  • 7.設(shè)置一個(gè)按鈕创橄,彈出選擇框,選擇想要的效果莽红,設(shè)置Type = SXpageUnCurl等效果;
    Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末妥畏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子安吁,更是在濱河造成了極大的恐慌醉蚁,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柳畔,死亡現(xiàn)場(chǎng)離奇詭異馍管,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)薪韩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)世曾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)绑嘹,“玉大人,你說(shuō)我怎么就攤上這事∥韵” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵姊途,是天一觀的道長(zhǎng)仍侥。 經(jīng)常有香客問(wèn)我,道長(zhǎng)捉偏,這世上最難降的妖魔是什么倒得? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮夭禽,結(jié)果婚禮上霞掺,老公的妹妹穿的比我還像新娘。我一直安慰自己讹躯,他們只是感情好菩彬,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著潮梯,像睡著了一般骗灶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上秉馏,一...
    開(kāi)封第一講書(shū)人閱讀 51,182評(píng)論 1 299
  • 那天耙旦,我揣著相機(jī)與錄音,去河邊找鬼萝究。 笑死母廷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的糊肤。 我是一名探鬼主播琴昆,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼馆揉!你這毒婦竟也來(lái)了业舍?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤升酣,失蹤者是張志新(化名)和其女友劉穎舷暮,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體噩茄,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡下面,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绩聘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沥割。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡耗啦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出机杜,到底是詐尸還是另有隱情帜讲,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布椒拗,位于F島的核電站似将,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蚀苛。R本人自食惡果不足惜在验,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望堵未。 院中可真熱鬧腋舌,春花似錦、人聲如沸兴溜。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拙徽。三九已至刨沦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間膘怕,已是汗流浹背想诅。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留岛心,地道東北人来破。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像忘古,于是被迫代替她去往敵國(guó)和親徘禁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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