zoukankan      html  css  js  c++  java
  • 使用animation效果切换两个UIView

     

     
    - (IBAction) switchViews:(id) sender {
    //开启动画
    [UIView beginAnimations:@"View Flip" context:nil];
    //设置动画时间 
    [UIView setAnimationDuration:1];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    //判断当前显示的UIView是不是yellowViewController.
    //如果显示的不是yellowViewController,它的view's superview就是nil.
    if([[self.yellowViewController viewsuperview] == nil){
    //判断yellowViewController有没有创建。
    if(self.yellowViewController == nil){
    //创建yellowViewController,initWithNibName根据nib文件名称创instance。
    YellowViewController *_yellowViewController = [[YellowViewController alloc]
      initWithNibName:@"YellowView" bundle:nil];
    self.yellowViewController = _yellowViewController;
    [_yellowViewController release];
    }
    //设置动画转换效果为flipFromRight.
    [UIView setAnimationTransition:
    UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];
    [self.blueViewController viewWillAppear:YES];
    [self.yellowViewController viewWillDisappear:YES];
    [self.blueViewController.view removeFromSuperview];
    [self.view insertSubview:self.yellowViewController.view atIndex:0];
    [self.blueViewController viewWillDisappear:YES];
    [self.yellowViewController viewWillAppear:YES];
    }else{
    if(self.blueViewController == nil){
    BlueViewController *_blueViewController = [[BlueViewController alloc]
      initWithNibName:@"BlueView" bundle:nil];
    self.blueViewController = _blueViewController;
    [_blueViewController release];
    }
    [UIView setAnimationTransition:
    UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];
    [self.blueViewController viewWillDisappear:YES];
    [self.yellowViewController viewWillAppear:YES];
    [self.yellowViewController.view removeFromSuperview];
    [self.view insertSubview:self.blueViewController.view atIndex:0];
    [self.blueViewController viewWillAppear:YES];
    [self.yellowViewController viewWillDisappear:YES];
    }
    [UIView commitAnimations];
    }

     

    iPhone application中,view的层级关系

    |---- window

           |---- subView (RootViewController 's View)

                 |----OtherViewController 's View

    在window出现后,调用delegate的applicationDidFinishLaunching 方法,通过方法[window addSubView:rootViewController.view];来显示RootViewController的UIView给用户。所以,这 个 UIView就是一个顶层的显示界面。然后通过rootViewController.view的insertSubView将 yellowViewController.view显示在window中。

  • 相关阅读:
    07.Linux-CentOS系统库文件libaudit.so.1丢失问题
    06.Linux-RedHat系统网卡服务连不上活跃连接路径变化
    05.Linux-CentOS系统普通用户SSH远程问题
    04.Linux-CentOS系统SSH连接问题
    03.Linux-CentOS系统user用户改密码问题
    解决pycharm问题:module 'pip' has no attribute 'main'
    Centos7搭建主从DNS服务器
    docker 启动镜像报 WARNING: IPv4 forwarding is disabled. Networking will not work.
    dockerfile文件命令详解
    Elasticsearch集群搭建笔记(elasticsearch-6.3.0)
  • 原文地址:https://www.cnblogs.com/allanliu/p/4203318.html
Copyright © 2011-2022 走看看