核心動畫的接觸點滴(四)

一、轉場動畫接受

        CAAnimation的子類,用於做轉場特效,可以爲層做移入或移除屏幕的動畫效果。比如像UINavigationController就是使用的轉場動畫進行頁面的推出和進入的。

        包含屬性:

        type:動畫的過渡類型(以何種方式進行執行轉場動畫)

        subtype:過渡方向

        startProgress:起始點(在整體動畫的百分比)

        endProgress:終結點(在整體動畫的百分比)


二、代碼示例

{

        //創建轉場動畫實例

        CATransition *CTAnima = [CATransition animation];

        //設置過渡類型

        CTAnima.type = @"cude";

        //設置過渡方向

        CTAnima.subtype = kCATransitionFromLeft;    //從左邊開始執行轉場動畫

        //動畫執行時間

        CTAnima.duration = 1.0f;

        //當然還可以設置起止點

        CTAnima.startProgress = 0.5;

        CTAnima.endProgress = 0.5;


        //最後添加到指定的視圖上即可

        [layer addAnimation:CTAnima forKey:nil];


}


三、組動畫簡單介紹

        同樣是CAAnimation的子類,可以保存一組動畫的對象,將CAAnimationGroup加入層後,組中的所有動畫都會併發運行。

        包含屬性:

        animatitons:用來保存動畫的數組

默認的,一組動畫對象是同事運行的,也可以通過修改beginTime來設置開始的時間。


四、代碼示例

{

        //先創建幾個不同的動畫

        CABasicAnimation *b1 = [CABasicAnimation animation];

        b1.keypath = @"position";    //平移

        b1.byValue = [NSValue valueWithCGPoint:CGPointMake(200, 300)];


        CABasicAnimation *b2 = [CABasicAnimation animation];

        b2.keypath = @"bounds";    //縮放

        b2.toValue =[NSValue valueWithCGRect:CGRectMake(0, 0, 200, 200)];


        CABasicAnimation *b2 = [CABasicAnimation animation];

        b2.keypath = @"transform";    //旋轉

        b2.toValue =[NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_4, 0, 0, 1)];


   //然後把這些動畫放入數組裏

    CAAnimationGroup *CAnimaG = [CAAnimationGroup animation];

    CAnimaG.animations = @[b1,b2,b3];

    CAnimaG.duration = 2.0f;

    CAnimaG.removeOnCompletion = NO;

    CAnimaG.fillMode = kCAFillModeForwards;

    //最後添加到指定的視圖上即可

    [view.layer addAnimation:CAnimaG forKey:nil];

}





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章