zoukankan      html  css  js  c++  java
  • iOS的view翻转动画实现--代码老,供参考

    新建一个view-based模板工程,在ViewController文件中添加下面的代码,即可实现翻转效果;

    - (void)viewDidLoad {

         [super viewDidLoad];

    //需要翻转的视图

    UIView *parentView = [[UIView alloc] initWithFrame:CGRectMake(0, 150, 320, 200)];

    parentView.backgroundColor = [UIColor yellowColor];

    parentView.tag = 1000;

    [self.view addSubview:parentView];

    }

    //需要在h头文件声明下面的动作响应函数

    //在xib文件中添加一个button,其响应函数为下面的函数

    //运行程序后,点击button就看到翻转效果

    -(IBAction)ActionFanzhuan{

    //获取当前画图的设备上下文

    CGContextRef context = UIGraphicsGetCurrentContext();

    //开始准备动画

    [UIView beginAnimations:nil context:context];

    //设置动画曲线,翻译不准,见苹果官方文档 

    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

    //设置动画持续时间

    [UIView setAnimationDuration:1.0];

    //因为没给viewController类添加成员变量,所以用下面方法得到viewDidLoad添加的子视图

    UIView *parentView = [self.view viewWithTag:1000];

    //设置动画效果

    [UIView setAnimationTransition: UIViewAnimationTransitionCurlDown forView:parentView cache:YES];  //从上向下

    // [UIView setAnimationTransition: UIViewAnimationTransitionCurlUp forView:parentView cache:YES];   //从下向上

    // [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView:parentView cache:YES];  //从左向右

    // [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromRight forView:parentView cache:YES];//从右向左

    //设置动画委托

    [UIView setAnimationDelegate:self];

    //当动画执行结束,执行animationFinished方法

    [UIView setAnimationDidStopSelector:@selector(animationFinished:)];

    //提交动画

    [UIView commitAnimations];

    }

    //动画效果执行完毕

    - (void) animationFinished: (id) sender{

    NSLog(@"animationFinished !");

    }

    运行程序,点击按钮,就能看到动画效果了

    下面我自己在parentView上添加了两个子视图实现动画

    - (void)viewDidLoad {

         [super viewDidLoad];

    UIView *parentView = [[UIView alloc] initWithFrame:CGRectMake(0, 150, 320, 200)];

    parentView.backgroundColor = [UIColor yellowColor];

    parentView.tag = 1000;

    UIImageView *image1 = [[UIImageView alloc] initWithFrame:CGRectMake(50, 50, 100, 100)];

    image1.backgroundColor = [UIColor redColor];

    image1.tag = 1001;

    UIImageView *image2 = [[UIImageView alloc] initWithFrame:CGRectMake(50, 50, 100, 100)];

    image2.backgroundColor = [UIColor blueColor];

    image2.tag = 1002;

    [parentView addSubview:image1];

    [parentView addSubview:image2];

    [self.view addSubview:parentView];

    }

    -(IBAction)ActionFanzhuan{

    CGContextRef context = UIGraphicsGetCurrentContext();

    [UIView beginAnimations:nil context:context];

    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

    [UIView setAnimationDuration:1.0];

    UIView *parentView = [self.view viewWithTag:1000];

    [UIView setAnimationTransition: UIViewAnimationTransitionCurlDown forView:parentView cache:YES];

    // [UIView setAnimationTransition: UIViewAnimationTransitionCurlUp forView:parentView cache:YES];

    // [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView:parentView cache:YES];

    // [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromRight forView:parentView cache:YES];

    NSInteger purple = [[parentView subviews] indexOfObject:[parentView viewWithTag:1002]];

    NSInteger maroon = [[parentView subviews] indexOfObject:[parentView viewWithTag:1001]];

    [parentView exchangeSubviewAtIndex:purple withSubviewAtIndex:maroon];

    [UIView setAnimationDelegate:self];

    [UIView setAnimationDidStopSelector:@selector(animationFinished:)];

    [UIView commitAnimations];

    }

    - (void) animationFinished: (id) sender{

    NSLog(@"animationFinished !");

    }

    另外:之前在viewDidLoad里面写实现动画的代码,但一致未实现动画效果,原来在viewDidLoad里面执行

    CGContextRef context = UIGraphicsGetCurrentContext();

    后context的指针为0

  • 相关阅读:
    几个常见移动平台浏览器的User-Agent
    正则表达式那些事儿(三)
    正则表达式那些事儿(二)
    正则表达式那些事儿(一)
    jQuery官网plugins栏目下那些不错的插件
    UVA 11729 Commando War 突击战 【贪心】
    HDOJ 2084 数塔 【dp】
    HDOJ 1465 不容易系列之一 【错排公式 递推】
    HDOJ 2046 骨牌铺方格 【递推】
    HDOJ 2044 一只小蜜蜂... 【递推】
  • 原文地址:https://www.cnblogs.com/isItOk/p/4875272.html
Copyright © 2011-2022 走看看