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

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 上下翻转效果  
分享到:
评论

相关推荐

    iPhone代码实例-翻页效果

    总的来说,实现iPhone上的翻页效果是一个涉及多方面技术的过程,它需要对iOS的动画框架、手势识别以及视图操作有深入的理解。通过分析和学习这样的代码实例,开发者不仅可以掌握具体的技术,还能培养解决问题和实现...

    iphone 翻页效果 (模拟器可用)

    “iphone”表明这是针对iOS设备的开发内容,“mapcurl”可能是对实现地图翻页效果的特定描述,“pagecurl”是iOS内置的一种动画效果,它模拟了页面卷曲翻转的效果,可以通过Core Animation框架的CATransition来实现...

    iphone上电子书翻页效果的实现

    接下来,我们关注核心部分——翻页动画的实现。有几种常见的方法可以实现这一效果: 1. **使用CATransition**:CATransition是Core Animation中的一个类,可以创建过渡动画,如推拉、淡入淡出等。通过自定义参数,...

    iPhone十种翻页效果

    "iPhone十种翻页效果"这个主题聚焦于如何在iPhone应用中实现各种翻页动画,为用户提供更加生动、交互性强的体验。翻页效果是iOS设备上常见的过渡动画,常见于电子书、杂志应用或任何需要页面切换的场景。以下将详细...

    iphone 翻页效果

    这时,可以使用`CATransition`或者自定义`UIView`动画来实现更复杂的翻页效果。`CATransition`是Core Animation层的一个过渡动画类,可以创建包括翻页在内的各种转场动画。 1. **使用CATransition**:通过设置`type...

    iphone 动画实现

    翻页动画在iOS中主要用于模拟实际书籍的翻页效果,常在阅读应用或页面切换场景中使用。这个效果可以通过CATransition或UIPageViewController实现。CATransition提供了多种转场动画类型,包括“curlUp”和“curlDown...

    iphone SceneTransition动画转换

    本项目聚焦于iPhone上的SceneTransition动画转换,包含了大约20多种不同的动画效果,适用于各种应用场合。这些动画不仅增加了应用程序的视觉吸引力,还使得用户在操作时更加直观和舒适。 首先,我们要理解...

    iPhone入门学习源代码 - 半翻页动画效果例子

    "iPhone入门学习源代码 - 半翻页动画效果例子" 是一个关于如何实现iPhone应用内类似翻页的动画效果的学习资源。这种效果模仿了真实世界中书页翻动的感觉,使得用户界面更加生动和引人入胜。这种半翻页动画通常用于...

    iphone下翻页效果的实例代码

    3. **实现翻页动画**:在处理函数中,你需要计算手指移动的距离和速度,然后根据这些信息来更新图层的形状和位置。Core Animation提供了一些内置的动画类型,如CABasicAnimation,但在这个案例中,你可能需要创建一...

    (0083)-iOS/iPhone/iPAD/iPod源代码-动画(Animation)-Core Animation Demos

    7. **电子书翻页(Page-Curl Effect)**:iOS中著名的翻页效果,是通过`CATransition`类实现的。这种过渡动画模拟了纸张被翻开或合上的视觉效果。 8. **图层组合(Layer Compositing)**:Core Animation允许你创建...

    ios 视图切换翻页效果

    最后,使用`CATransition`来创建翻页动画,将其添加到页面内容视图的`layer`上。 在实践中,`NVDemo`可能是一个包含示例代码的项目,用于演示如何实现上述的翻页效果。这个项目可能包含了多个`UIViewController`...

    (0166)-iOS/iPhone/iPAD/iPod源代码-视图切换(View Transition)-Flip View

    - 考虑性能问题,避免在短时间内频繁执行翻页动画。 5. **源代码分析**: 压缩包中的"Flip View"文件可能包含了实现Flip View效果的示例代码。通常,你会看到一个自定义的`UIViewController`子类,其中包含了创建...

    iphone 页面翻转效果

    在iOS应用开发中,"iPhone页面翻转效果"是一种常见的过渡动画,通常用于模拟实际书籍翻页的效果,为用户带来更生动、互动的体验。这种效果在电子杂志、电子书或者展示类应用中尤其常见,因为它能带给用户更加真实且...

    iphone 各种视图切换效果

    本文将深入探讨“iPhone各种视图切换效果”,并结合源码分析,帮助开发者实现丰富的页面过渡动画。 1. **UINavigationController的pushViewController和popViewController** UINavigationController是iOS中最常见...

    iOS开发常用动画

    此外,还可以通过仅设置`setType:`来实现更多特殊效果,例如`pageCurl`(向上翻页)、`pageUnCurl`(向下翻页)、`rippleEffect`(水波纹效果)、`suckEffect`(收缩效果)等。 **示例代码**: ```objective-c ...

    IOS应用源码之【框架】目前为止最为接近iBook的翻页效果(超酷).rar

    在这个源码中,可能使用了`CATransition`或`CABasicAnimation`来实现翻页动画。 3. **Page Control**:UIPageControl通常用于指示多页面视图的当前页和总页数,类似于iBook底部的小圆点。在实现翻页效果时,它能...

    (0015)-iOS/iPhone/iPAD/iPod源代码-视图切换(View Transition)-UIView Transition

    本教程主要聚焦于使用`UIView`类中的过渡动画来实现各种炫酷的页面转换效果,如翻页、波纹、旋转和翻转等。这些效果可以极大地提升用户体验,使应用看起来更加专业和吸引人。 首先,我们要了解`UIView`类中的`...

    IOS应用源码——超炫的滑屏翻页效果.zip

    这可能涉及到Core Animation框架,通过创建并配置关键帧动画或转场动画,实现更加逼真的翻页动画。 3. **数据模型**:在iOS应用中,数据通常是页面内容的来源。源码可能使用了数组或其他数据结构存储页面数据,并...

    (0073)-iOS/iPhone/iPAD/iPod源代码-视图切换(View Transition)-View Transition

    本资源“iOS/iPhone/iPAD/iPod源代码-视图切换(View Transition)-View Transition”提供了一组实现各种页面切换过渡效果的示例代码,适用于开发者学习和应用到自己的项目中。 在iOS中,我们可以使用苹果提供...

    UIPageViewController 翻页背景

    例如,可以自定义`UIPageViewControllerTransitionDuration`属性,或者使用`CATransition`来实现更复杂的动画效果。 标签“PageView”和“翻页”提示我们关注页面间的过渡效果。在实际应用中,可能还需要处理边缘...

Global site tag (gtag.js) - Google Analytics