需要在frameworks中添加QuartzCore.framework


在接口程序中加上头文件   #import

/*好多动画效果*/

    CATransition *transition = [CATransition animation];
    transition.duration = 1.0f;         
/* 间隔时间*/
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; /* 动画的开始与结束的快慢*/
    transition.type = @"rippleEffect"; 
/* 各种动画效果*/

//@"cube" @"moveIn" @"reveal" @"fade"(default) @"pageCurl" @"pageUnCurl" @"suckEffect" @"rippleEffect" @"oglFlip"@"cameraIrisHollowOpen"@"cameraIrisHollowClose"

    transition.subtype = kCATransitionFromRight;   /* 动画方向*/
    transition.delegate = self;
    [navigationController.view.layer 
/* 在想添加CA动画的VIEW的层上添加此代码*/addAnimation:transition forKey:nil];


//另外加一句,transition在申请时用的是+方法,所以不需要自己进行release ,在层上添加后不要认为retainCount已经+1,就还要release

//实际上CATransition类中还有一个属性是removedOnCompletion,是此动画执行完后会自动remove,默认值为true



CATransition的type属性

这里使用了setType与setSubtype组合,这使用个比较保险,因为他的参数就是官方API里定义的,他们的参数说明可以参考如下:

setType:可以返回四种类型:  
kCATransitionFade淡出  
kCATransitionMoveIn覆盖原图  
kCATransitionPush推出  
kCATransitionReveal底部显出来  
setSubtype:也可以有四种类型:  
kCATransitionFromRight;  
kCATransitionFromLeft(默认值)  
kCATransitionFromTop;  
kCATransitionFromBottom

animation.type=@"pageCurl";  
[c] view plaincopy
pageCurl   向上翻一页  
pageUnCurl 向下翻一页  
rippleEffect 滴水效果  
suckEffect 收缩效果,如一块布被抽走  
cube 立方体效果  
oglFlip 上下翻转效果

示例

+(CATransition*)addCubeAnimationWithAnimationSubType:(NSString*)subType

{

    CATransition*animation=[CATransition animation];

    //设置动画效果

    [animation setType:@"oglFlip"];

    //设置动画方向

    [animation setSubtype:kCATransitionFromRight];

    //设置动画播放时间

    [animation setDuration:1.0f];

    //设置动画作用范围

    [animation setTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut]];

    return animation;

}


    JX_XQViewController*xq=[[JX_XQViewControlleralloc]init];

    [self.navigationController.view.layer addAnimation:[AnimationTooladdCubeAnimationWithAnimationSubType:kCATransitionFromRightforKey:nil]

    ;

    [self.navigationController pushViewController:xq animated:YES];