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中。

  • 相关阅读:
    Delphi通过调用COM对象实现更改桌面壁纸
    Delphi之TDrawGrid绘制
    Delphi中的消息截获(六种方法:Hook,SubClass,Override WndProc,Message Handler,RTTI,Form1.WindowProc:=@myfun)good
    从一般管理原则看微软的重组
    Delphi使用Windows API函数AnimateWindow实现窗体特效
    Delphi下URL汉字编码解码的两个函数
    Delphi2007下CIS的clHttp使用
    Delphi使用XmlHttp获取时间
    提升进程权限为DEBUG权限
    VS 2012 单元测试简单配置
  • 原文地址:https://www.cnblogs.com/allanliu/p/4203318.html
Copyright © 2011-2022 走看看