`
helmsman_xcode
  • 浏览: 25308 次
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Iphone翻页动画效果--CATransition实现

 
阅读更多
本站最新网址:http://www.helmsmansoft.com 欢迎关注

   功能代码如下:

   在.h文件中定义

    NSMutableArray *views;

    NSInteger currentPage;

    CGPoint startPoint;

- (void)viewDidLoad  //重写初始化载入方法
{
 /*
  初始化数据
  */
    [super viewDidLoad];
    self.view.userInteractionEnabled = YES;   //开启交互功能
    UIImageView *view1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pageone.png"]];
    view1.userInteractionEnabled = YES;
    view1.frame = CGRectMake(0, 0, 320, 460); //设置坐标
    UIImageView *view2 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pagetwo.png"]];
    view2.userInteractionEnabled = YES;
    view2.frame = CGRectMake(0, 0, 320, 460);
    UIImageView *view3 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pagethr.png"]];
    view3.userInteractionEnabled = YES;
    view3.frame = CGRectMake(0, 0, 320, 460);
    UIImageView *view4 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pagefou.png"]];
    view4.userInteractionEnabled = YES;
    view4.frame = CGRectMake(0, 0, 320, 460);
    NSMutableArray *muView = [[NSMutableArray alloc] init];
    [muView addObject:view1];
    [muView addObject:view2];
    [muView addObject:view3];
    [muView addObject:view4];
    [view1 release];
    [view2 release];
    [view3 release];
    [view4 release];
    self.views = muView;
    [muView release];
    
    [self.view addSubview:view1];   //添加视图
    //[self.view insertSubview:view1 atIndex:0];
}

- (void)turnLeftPage:(UIView *)view  //自定义
{
   //设置type和subtype属性产生不同的动画效果
    CATransition *transition = [CATransition animation]; //定义过度动画
    transition.duration = 0.75; //持续时间
    transition.type = @"pageCurl";   //动画样式
    transition.subtype = kCATransitionFromLeft;  //方向
    [[self.view.subviews objectAtIndex:0] removeFromSuperview]; //移除原视图
    [self.view insertSubview:view atIndex:0];   //添加新视图
//    [self viewWillDisappear:NO];
    [self.view.layer addAnimation:transition forKey:nil]; //动画添加到层
}



- (void)turnRightPage:(UIView *)view
{
    CATransition *transition = [CATransition animation];
    transition.duration = 0.75;
    transition.type = @"pageCurl";  
    transition.subtype = kCATransitionFromRight;
    [[self.view.subviews objectAtIndex:0] removeFromSuperview];
    [self.view insertSubview:view atIndex:0];
//    [self viewWillDisappear:YES];
    [self.view.layer addAnimation:transition forKey:nil];
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    CGPoint pointone = [touch locationInView:self.view];//获得初始的接触点
    self.startPoint  = pointone;
    
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    CGPoint pointtwo = [touch locationInView:self.view];  //获得滑动后最后接触屏幕的点
    if(fabs(pointtwo.x-startPoint.x)>50){  //判断亮点间的距离
        if(pointtwo.x-startPoint.x>0){   //判断点的位置关系
            --currentPage;
            if(self.currentPage >= 0){   //判断页码
                UIImageView *nextView = [self.views objectAtIndex:currentPage]; //初始化下一页
                [self turnLeftPage:nextView];   //调用自定义方法
            }else{
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"警告!" message:@"已经到第一页了" delegate:nil cancelButtonTitle:@"好" otherButtonTitles: nil];
                [alert show]; //画警告
                [alert release];
                self.currentPage = 0;
                
            }
        }else{
            ++currentPage;
            if(self.currentPage < [self.views count]){
                UIImageView *nextView = [self.views objectAtIndex:currentPage];
                [self turnRightPage:nextView];
            }else{
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"警告!" message:@"已经是最后一页了" delegate:nil cancelButtonTitle:@"好" otherButtonTitles: nil];
                [alert show];
                [alert release];
                self.currentPage = [self.views count]-1;
            }
            
        }
    }
    
}
这里使用了setType与setSubtype组合,这使用个比较保险,因为他的参数就是官方API里定义的,他们的参数说明可以参考如下: setType:可以返回四种类型: kCATransitionFade淡出 kCATransitionMoveIn覆盖原图 kCATransitionPush推出 kCATransitionReveal底部显出来 setSubtype:也可以有四种类型: kCATransitionFromRight; kCATransitionFromLeft(默认值) kCATransitionFromTop; kCATransitionFromBottom 还有一种设置动画类型的方法,不用setSubtype,只用setType [animation setType:@"suckEffect"]; 这里的suckEffect就是效果名称,可以用的效果主要有: pageCurl 向上翻一页 pageUnCurl 向下翻一页 rippleEffect 滴水效果 suckEffect 收缩效果,如一块布被抽走 cube 立方体效果 oglFlip 上下翻转效果  
分享到:
评论

相关推荐

    swift-利用CATransition-给push控制器添加丰富的动画效果

    利用CATransition-给push控制器添加丰富的动画效果

    CATransition动画

    CATransition动画,一些CATransition的简单运用,非常简单的运用

    iOS基于CATransition实现翻页、旋转等动画效果

    主要为大家详细介绍了iOS基于CATransition实现翻页、旋转等动画效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    ios-iOS转场动画.zip

    iOS中比较全的翻转过渡动画(不只是苹果提供的)。包括(翻页效果、水滴效果、收缩效果、立方体效果、相机镜头打开和关闭效果等等。 也可以去我的github下载:https://github.com/Wheat-Qin/CATransition_Demo

    ios-利用CATransition制作的一个图片轮播.zip

    利用CATransition制作的一个图片轮播,这里是通过监控手势的上下走势来控制图片的上下轮播,初步就做到功能后面在进行优化和升级。这是我的gti上对应的地址:https://github.com/tangyi1234/pictureDy.git

    利用Swift实现各类的CATransition动画详解

    CATransition动画主要在过渡时使用,比如两个页面层级改变的时候添加一个转场效果。CATransition分为两类,...这篇文章主要给大家介绍了关于如何利用Swift实现各类CATransition动画的相关资料,需要的朋友可以参考下。

    swift CATransition页面跳转动画

    xcode6.3编译,通过swift语言代码方式编写页面跳转动画

    ios-CATransition.zip

    简单的转场动画

    iOS开发中常用的各种动画、页面切面效果

    今天主要用到的动画类是CALayer下...#pragma CATransition动画实现 - (void) transitionWithType:(NSString *) type WithSubtype:(NSString *) subtype ForView : (UIView *) view { //创建CATransition对象 CATransit

    实例讲解iOS中的CATransition转场动画使用

    如:UINavigationController导航控制器就是通过CATransition转场动画实现了将控制器的视图推入屏幕的动画效果 CATransition头文件 动画属性: type:动画过渡类型 subtype:动画过渡方向 startProgress:动画起点...

    核心动画之转场动画

    这是我在学习ios的过程中写的一个demo,使用CATransition实现转场动画效果。

    ios常用动画封装类

    * 各种动画效果 其中除了'fade', `moveIn', `push' , `reveal' ,其他属于似有的API(我是这么认为的,可以点进去看下注释). * ↑↑↑上面四个可以分别使用'kCATransitionFade', 'kCATransitionMoveIn', '...

    详解iOS开发中的转场动画和组动画以及UIView封装动画

    UINavigationController就是通过CATransition实现了将控制器的视图推入屏幕的动画效果 属性解析: type:动画过渡类型 subtype:动画过渡方向 startProgress:动画起点(在整体动画的百分比) endProgress:动画终点(在...

    iOS CATransition 详细使用文档

    iOS CATransition 详细使用文档

    ios 动画,立方体

    1.这是用catransition实现的动画 2.这个动画执行一半,点灰色部分再回到初始状态

    详解IOS图层转场动画

    UINavigationController就是通过CATransition实现了将控制器的视图推入屏幕的动画效果 属性解析: type:动画过渡类型 subtype:动画过渡方向 startProgress:动画起点(在整体动画的百分比) endProgress...

    iOS中比较全的翻转过渡动画

    作者Wheat-Qin,源码CATransition_Demo,iOS中比较全的翻转过渡动画(不只是苹果提供的)。包括(翻页效果、水滴效果、收缩效果、立方体效果、相机镜头打开和关闭效果等等。

    CATransition uinavigation跳转方法

    可帮助你更加熟练页面间的跳转

    文本过渡动画效果

    源码NRTextTransitions,NRTextTransitions可轻松处理UILabel、UITextView以及UITextField中的文本过渡动画。NRTextTransitions使用了和UIView类方法相似的API。 Basic, block based, text transitions ...

Global site tag (gtag.js) - Google Analytics