今天碰到两个页面之间翻转的动作设计问题,发现了一些问题,故做个总结,很多都写在注释部分:

1、首先,我们来手动创建两个view以及相应的viewController。是手动,不是用IB

(1)刚开始只加载一个view(第二个),若两个同时加载,第二个页面可能不能完全被遮挡。第二个页面可以通过翻转来显示。

	[window addSubview:secodViewController.view];

2、要求:每个view页面都有一个按钮,按下之后切换到另一个页面,要求有炫一点的切换效果,故要对Animation属性进行一些设置

(1)helloWorldViewController.m:

mySecondViewController *SecondViewController;
- (void) btnClicked:(id)sender
{
SecondViewController=[[mySecondViewController alloc]
initWithNibName:@"SecondViewController"
bundle:nil]; //---创建一个翻转页面的动画---
//---这个动画的forView属性是UIView,应用与整个view,跟有几个页面无关,只有一个页面仍旧有效果出来---
[UIView beginAnimations:@"flipping view" context:nil];
[UIView setAnimationDuration:];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft//与Left相对
forView:self.view.superview cache:YES];//forView:UIView //---remove the current view; essentially hiding the view--- [self.view removeFromSuperview];
//不加这句也可以正常运行,不过程序会一直叠加view,内存浪费!
[UIView commitAnimations];//执行动画 }

(2)secondViewController.m:

-(IBAction) btnClicked:(id)sender
{
helloWorldViewController=[[helloWorldApp alloc]initWithNibName:@"helloWorldApp"
bundle:nil];
//实例化一个控制器,因为下面addSubView要用到
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:nil
message:@"你按了SecondView的按钮!"
delegate:self
cancelButtonTitle:@"done"
otherButtonTitles:nil];
[alert show];
[alert release];
//---创建一个翻转页面的动画---
[UIView beginAnimations:@"flipping view" context:nil];
[UIView setAnimationDuration:];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationTransition: UIViewAnimationTransitionFlipFromRight//与Left相对
forView:self.view.superview cache:YES]; //---remove the current view; essentially hiding the view---
[self.view addSubview:helloWorldViewController.view]; [UIView commitAnimations];//执行动画 }

UIView是UIWindow、UIScrollBar等的超类,所以这里的self.view.superview就是UIView。所以这里的Animation动画是针对UIView而言的,而不是当前view页面,我觉得这点是最关键的。只有理解了这点,对与该remove还是addsubview就不会晕了。

其实,道理很简单,用土话总结一下:先加载ViewB->在ViewB的Action里面设置好动画,把ViewA加到ViewA (addSubView)->转到了ViewA,设置动画,removeFromSuperView(这里的super就是指ViewA,因为刚刚是SubView,Sub,子,与父对应)->转到ViewA.....循环下去。用更土的话讲,就是第二加载的View要自杀完才回到第一加载的View。

转:http://www.cnblogs.com/wengzilin/archive/2012/03/01/Animation.html

转:在两个页面间翻转设置Animation动作的一些总结的更多相关文章

  1. 【vue】两个页面间传参 - props

    目录 Step1 设置可以 props 传递数据 Step2 跳转前页面中传递数据 Step3 跳转后的页面接收数据 从 A 页面跳转到 B 页面, 参数/数据通过 props 传递到 B 页面,这种 ...

  2. iOS block在两个页面间的简单传值

    #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...

  3. 详细介绍ASP.NET页面间数据传递的使用方法

    源码:http://www.jinhusns.com/Products/Download/?type=xcj 在ASP.NET中,页面间数据传递的方法有很多.下面为大家总结一下,页面间数据传递的方法. ...

  4. ASP.NET十分有用的页面间传值方法

    一.目前在ASP.NET中页面传值共有这么几种方式: 1.表单提交,   <form action= "target.aspx" method = "post&qu ...

  5. ASP.NET页面间传值总结

    本文我们将讨论的是ASP.NET页面间数据传递的几种方法,对此希望能帮助大家正确的理解ASP.NET页面间数据传递的用处以及便利性. Web页面是无状态的,服务器对每一次请求都认为来自不同用户,因此, ...

  6. ASP.NET页面间数据传递的方法<转>

    ASP.NET页面间数据传递的方法 作者: 灰色的天空2  来源: 博客园  发布时间: 2010-10-28 11:06  阅读: 822 次  推荐: 0   原文链接   [收藏]   摘要:本 ...

  7. ASP.NET中实现页面间数据传递的方法

    说到页面间数据传递,很多人都会想到通过像Session这样的全局变量,但是向Session中添加的东西太多会增加服务器的压力,页面间数据传递,数据的作用范围越小越好.   ASP.NET页面间数据传递 ...

  8. ASP.Net页面间传值

    一.目前在ASP.NET中页面传值共有这么几种方式: 1.表单提交,   <form action= "target.aspx" method = "post&qu ...

  9. ASP.NET 页面间数据传递的方法

    在做WEB开发时,很多地方会涉及到页面间的数据传递.这几天在完善教务基础系统,遇到了这个问题,上网查了一些资料,现总结如下: 说到页面间数据传递,很多人都会想到通过像Session这样的全局变量,但是 ...

随机推荐

  1. oralce 笔记

    查某一表的行数 select max(rownum) from tablename 插入数据之前判断是否重复 insert into tablename (coloum1,coloum2) selec ...

  2. Python之Selenium的爬虫用法

    Selenium 2,又名 WebDriver,它的主要新功能是集成了 Selenium 1.0 以及 WebDriver(WebDriver 曾经是 Selenium 的竞争对手).也就是说 Sel ...

  3. 20165203《Java程序设计》第二周Java学习总结

    教材学习内容总结 第二章 (一)标识符 注意: 标识符由字母.下画线.美元符号和数字组成,长度不受限制. 标识符第一个字符不能是数学字符. 标识符不能是关键字. 标识符不能是true.false和nu ...

  4. HBase入门笔记--读性能优化

    一.前言 在生产环境使用HBase过程中,随着数据量的不断增加,查询HBase数据变得越来越慢,对于业务来说是不可用的,需要对读性能进行优化 二.问题定位 从hbase监控指标来看,发现FullGC次 ...

  5. 选择性卸载eclipse安装过的工具

    我们有时候需要卸载eclipse中之前安装的一些工具,而不想全部删除,那就可以采取下面的方式: 打开eclipse,Help->About Eclipse->Installation De ...

  6. Ionic Js十九:加载动画

    ion-spinner ionSpinner 提供了许多种旋转加载的动画图标.当你的界面加载时,你就可以呈现给用户相应的加载图标. 该图标采用的是SVG.  实例 HTML 代码 <ion-c ...

  7. 有关FPGA

         在FPGA发展历史上,前后共有过超过50家厂商,在国外目前剩下不到10家,除赛灵思和ALTERA两家持续不断地军备竞赛,其它的都有着各自固守的市场定位.即使是有新进入者,例如受英特尔新工艺支 ...

  8. Wannafly挑战赛9 B - 数一数

    链接:https://www.nowcoder.com/acm/contest/71/B来源:牛客网 题目描述 设s,t为两个字符串,定义f(s,t) = t的子串中,与s相等的串的个数.如f(&qu ...

  9. h5行情k线开发

    前言         由于公司项目需要,要做港股行情的H5版本,经过分析需求,大致有两块难点: 一是行情的推送接收,二是行情K线的生成及相关操作.本文章主要分析行情K线的相关实现,由于我们前端团队之前 ...

  10. 用 React 编写移动应用 React Native

    转载:用 React 编写移动应用 React Native ReactNative 可以基于目前大热的开源JavaScript库React.js来开发iOS和Android原生App.而且React ...