在iPhone开发中,我们常常需要在不同的页面之间做动画的切换,这样看起来更加好看。基本的动画有以下三种: 1.UIView UIView官方提供五种动画效果供大家使用,分别为: UIViewAnimationTransitionNone 不使用动画UIViewAnimationTransitionFlipFromLeft 从左向右旋转翻页UIViewAnimationTransitionFlipFromRight 从右向左旋转翻页,与UIViewAnimationTransitionFlipFromLeft相反UIViewAnimationTransitionCurlUp 卷曲翻页,从下往上UIViewAnimationTransitionCurlDown 卷曲翻页,从上往下
例子: [UIView beginAnimations:@"animationID" context:nil];//开始一个动画块,第一个参数为动画块标识[UIView setAnimationDuration:0.5f];//设置动画的持续时间[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];//设置动画块中的动画属性变化的曲线,此方法必须在beginAnimations方法和commitAnimations,默认即为UIViewAnimationCurveEaseInOut效果。详细请参见UIViewAnimationCurve[UIView setAnimationRepeatAutoreverses:NO];//设置是否自动反转当前的动画效果[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];//设置过渡的动画效果,此处第一个参数可使用上面5种动画效果[self.view exchangeSubviewAtIndex:1 withSubviewAtIndex:0];//页面翻转[UIView commitAnimations];//提交动画
这样,我们就可以让UIView的页面通过动画实现页面之间的跳转。 2. CATransiton CATransiton官方提供4种动画效果,分别为: NSString * const kCATransitionFade;//渐渐消失 NSString * const kCATransitionMoveIn;//覆盖进入 NSString * const kCATransitionPush;//推出 NSString * const kCATransitionReveal;//与MoveIn相反
例子: CATransition *animation = [CATransition animation];//初始化动画animation.duration = 0.5f;//间隔的时间animation.timingFunction = UIViewAnimationCurveEaseInOut;animation.type = kCATransitionPush;//设置上面4种动画效果animation.subtype = kCATransitionFromTop;//设置动画的方向,有四种,分别为kCATransitionFromRight、kCATransitionFromLeft、kCATransitionFromTop、kCATransitionFromBottom[self.view.layer addAnimation:animation forKey:@"animationID"];
3.私有动画 私有动画是在UIView的基础上,设置animation.type,可以提供一下几种选择: cube:像立方体那样翻转 suckEffect:渐渐缩小,与删除照片的动画一样 oglFlip:上下旋转,当subType为fromLeft或者fromRight时,与UIViewAnimationTransitionFlipFromLeft和UIViewAnimationTransitionFlipFromRight一样 rippleEffect:水波效果 pageCurl:与UIViewAnimationTransitionCurlUp一样 pageUnCurl:与UIViewAnimationTransitionCurlDown一样 cameraIrisHollowOpen:First half of cameraIris. cameraIrisHollowClose:Second half of cameraIris 附加一个动画的源代码给大家参考一下,今天将的动画效果就到此介绍。谢谢大家。 附件地址:http://files.cnblogs.com/huangdongcheng/transition_ViewTransitions.zip
|
应用开发中总要用到加载数据时候的loading动画效果 以下为一个loading效果实例,可以直接拿去用的:
在你的xxxController 头文件中声明: UIView *colorView;
UIActivityIndicatorView *aciv;
初始化中定义: aciv = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; colorView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, screenWidth, screenHeight)];
[colorView setBackgroundColor:[UIColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:0.4]];
加入以下方法:
- (void)addLoading{
aciv.activityIndicatorViewStyle=UIActivityIndicatorViewStyleWhite;
aciv.center=CGPointMake(screenWidth/2,screenHeight/2-10);
[self.view addSubview:colorView];
[aciv startAnimating];
[self.view addSubview:aciv];
}
- (void)removeLoading{
[colorView removeFromSuperview];
[aciv stopAnimating];
[aciv removeFromSuperview];
}
注释掉 //[self.view addSubview:colorView];
//[colorView removeFromSuperview];
则动画没有灰色背景 界面切换则可以有很多效果,如淡入淡出,放大,雾化,翻转等。 淡入淡出:
- (void)animateEaseInEaseOut:(CALayer*)laye delegate:(id)del{
CATransition *animationA = [CATransition animation];
[animationA setType:kCATransitionFade];
[animationA setDuration:1];
[animationA setDelegate:del];
[animationA setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; [laye addAnimation:animationA forKey:@"EaseInEaseOut"];
}
翻转:
- (void)animateFlipView{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];
[UIView commitAnimations];
}