转:在两个页面间翻转设置Animation动作的一些总结
今天碰到两个页面之间翻转的动作设计问题,发现了一些问题,故做个总结,很多都写在注释部分:
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动作的一些总结的更多相关文章
- 【vue】两个页面间传参 - props
目录 Step1 设置可以 props 传递数据 Step2 跳转前页面中传递数据 Step3 跳转后的页面接收数据 从 A 页面跳转到 B 页面, 参数/数据通过 props 传递到 B 页面,这种 ...
- iOS block在两个页面间的简单传值
#import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...
- 详细介绍ASP.NET页面间数据传递的使用方法
源码:http://www.jinhusns.com/Products/Download/?type=xcj 在ASP.NET中,页面间数据传递的方法有很多.下面为大家总结一下,页面间数据传递的方法. ...
- ASP.NET十分有用的页面间传值方法
一.目前在ASP.NET中页面传值共有这么几种方式: 1.表单提交, <form action= "target.aspx" method = "post&qu ...
- ASP.NET页面间传值总结
本文我们将讨论的是ASP.NET页面间数据传递的几种方法,对此希望能帮助大家正确的理解ASP.NET页面间数据传递的用处以及便利性. Web页面是无状态的,服务器对每一次请求都认为来自不同用户,因此, ...
- ASP.NET页面间数据传递的方法<转>
ASP.NET页面间数据传递的方法 作者: 灰色的天空2 来源: 博客园 发布时间: 2010-10-28 11:06 阅读: 822 次 推荐: 0 原文链接 [收藏] 摘要:本 ...
- ASP.NET中实现页面间数据传递的方法
说到页面间数据传递,很多人都会想到通过像Session这样的全局变量,但是向Session中添加的东西太多会增加服务器的压力,页面间数据传递,数据的作用范围越小越好. ASP.NET页面间数据传递 ...
- ASP.Net页面间传值
一.目前在ASP.NET中页面传值共有这么几种方式: 1.表单提交, <form action= "target.aspx" method = "post&qu ...
- ASP.NET 页面间数据传递的方法
在做WEB开发时,很多地方会涉及到页面间的数据传递.这几天在完善教务基础系统,遇到了这个问题,上网查了一些资料,现总结如下: 说到页面间数据传递,很多人都会想到通过像Session这样的全局变量,但是 ...
随机推荐
- Spring介绍及配置(XML文件配置和注解配置)
本节内容: Spring介绍 Spring搭建 Spring概念 Spring配置讲解 使用注解配置Spring 一.Spring介绍 1. 什么是Spring Spring是一个开源框架,Sprin ...
- KAFKA随机产生JMX 端口指定的问题
https://blog.csdn.net/weixin_40209426/article/details/82217987
- 【LOJ】#2047. 「CQOI2016」伪光滑数
题解 可持久化可并堆 用\(f[i,j]\)表示最大的质数标号为i,然后有j个质数乘起来 用\(g[i,j]\)表示\(\sum_{k = 1}^{i}f[k,j]\) 转移是 \(f[i,j] = ...
- 【LOJ】 #2545. 「JXOI2018」守卫
题解 只会蠢蠢的\(n^3\)--菜啊-- 我们发现最右的端点一定会选,看到的点一定是当前能看到的斜率最小的点变得更小一点,记录下这个点,在我们遇到一个看不到的点的时候,然后只用考虑R到它斜率最小的这 ...
- Vue学习笔记进阶篇——Render函数
基础 Vue 推荐在绝大多数情况下使用 template 来创建你的 HTML.然而在一些场景中,你真的需要 JavaScript 的完全编程的能力,这就是 render 函数,它比 template ...
- 自定义JSP标签示例
我们以一个例子来讲解如何自定义JSP标签,假如我们需要在页面中输出当前的时间,按照最简单的JSP脚本,需要在JSP里面写很多Java代码,那么如何来使用自定义标签实现这个功能呢? 首先,我们要先创建一 ...
- 俄罗斯方块 Tetris
今天,为大家带来一个用Qt C++ (Windows环境下)做的一个简易俄罗斯方块小游戏 思路和模块介绍都在注释里面,其次就是一些项目中遇到的问题以及解决方案,在后面部分说明. 一.效果 测试图样 Q ...
- CodeDom生成类文件
仅供个人学习 需要先引入System.CodeDom nuget包 using CodeGenerate.Entities; using System; using System.CodeDom; u ...
- Centos 安装 WPS
Linux有自己的一套类是Office的办公软件:LibreOffice,但是不是很友好,幸好WPS有Linux版本. 安装步骤: 1.安装依赖包 yum install libpng12 yum i ...
- PHP 笔记——文件引用
1. 文件路径 "文件路径"指的是被包含文件所在的绝对路径或相对路径. 在相对路径中,"./"表示当前目录,"../"表示当前目录的上级目录 ...