转自:http://blog.csdn.net/likendsl/article/details/7542296
 
1.UIViewContrller之间的切换有三种方式:
    一、UIViewController自身之间的调用:[self presentModalViewController:UIViewController animated:YES];
对应的返回操作函数:[self dismissModalViewControllerAnimated:YES];这里的self代表的是UIViewController自己。
   其可设置四种动画模式:
case :
[ctrl setModalTransitionStyle:UIModalTransitionStyleCoverVertical]; //底部向上 默认的动画方式
break;
case :
[ctrl setModalTransitionStyle:UIModalTransitionStyleCrossDissolve]; //渐变
break;
case :
[ctrl setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; //翻转
break;
case :
[ctrl setModalTransitionStyle:UIModalTransitionStylePartialCurl]; //翻半页
break;
default:
[ctrl setModalTransitionStyle:UIModalTransitionStyleCoverVertical]; //底部向上 默认的动画方式
break;
       二、通过UIViewController的子类UINavigationControlle导航控制器的Controller来控制ViewContrller之间的切换,这种切换模式适合于具有层次逻辑性的ViewContrller之间的切换。
对应的调用函数:[self.navigationController pushViewController:ctrl animated:YES]; 
返回:[self.navigationController popViewControllerAnimated:YES];,
也可直接指定返回到那一个ViewController:
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated
还可以直接返回到RootViewController:- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated
 
    实现NavigationController的delegate可以在返回时做相应的更新操作(- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated )
 
      三、就是UITabBarContrller其也是继承于UIViewController,主要是做具有并行逻辑特点的ViewController之间的切换。

UITabBarContrller对象有一个属性selectedIndex,设置初始时默认展示的ViewController。

而当点击tabBarItem时触发切换操作  都会回调UITabBarControllerDelegate中的一个方法

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *) viewController

Controller调用了返回函数,如dismiss,pop等等,那么就会被清理掉。
备注:如果Controller或view中有线程或者定时器之类的动画操作如果没有结束那么这个Controller或view就会出现内存泄露了。
 
 
参考2:http://www.haogongju.net/art/2590704

视图切换,没有NavigationController的情况下,一般会使用presentViewController来切换视图并携带切换时的动画,

其中切换方法如下:

– presentViewController:animated:completion: 弹出,出现一个新视图 可以带动画效果,完成后可以做相应的执行函数经常为nil
– dismissViewControllerAnimated:completion:退出一个新视图 可以带动画效果,完成后可以做相应的执行函数经常为nil

切换动画在压入一个新视图和弹出顶层视图均可以使用,下面只以压入视图为例。

presentModalViewController:animated:completion:使用系统自带四种动画

简单的实现方式:

[page2Controller setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; [self presentModalViewController:myNextViewController animated:YES completion:nil];

系统支持的四种动画:

typedef enum { UIModalTransitionStyleCoverVertical=0, //默认方式,竖向上推 UIModalTransitionStyleFlipHorizontal, //水平反转 UIModalTransitionStyleCrossDissolve,//隐出隐现 UIModalTransitionStylePartialCurl,//部分翻页效果 } UIModalTransitionStyle;

presentModalViewController:animated:completion: 不用自带的四种动画效果

实现全翻页效果:

CATransition *animation = [CATransition animation]; animation.duration = 1.0; animation.timingFunction = UIViewAnimationCurveEaseInOut; animation.type = @"pageCurl"; //animation.type = kCATransitionPush; animation.subtype = kCATransitionFromLeft; [self.view.window.layer addAnimation:animation forKey:nil]; [self presentModalViewController:myNextViewController animated:NO completion:nil];

常見的轉換類型(type):

kCATransitionFade //淡出 kCATransitionMoveIn //覆盖原图 kCATransitionPush //推出 kCATransitionReveal //底部显出来

SubType:

kCATransitionFromRight kCATransitionFromLeft // 默认值  kCATransitionFromTop kCATransitionFromBottom

设置其他动画类型的方法(type):

pageCurl 向上翻一页 pageUnCurl 向下翻一页 rippleEffect 滴水效果 suckEffect 收缩效果,如一块布被抽走 cube 立方体效果 oglFlip 上下翻转效果

UIViewContrller之间切换的几种方式的更多相关文章

  1. 【百度地图API】关于如何进行城市切换的三种方式

    原文:[百度地图API]关于如何进行城市切换的三种方式 摘要:本文介绍了三种切换城市的方式:查询城市.城市列表和显示城市轮廓. ------------------------------------ ...

  2. 【原】react做tab切换的几种方式

    最近搞一个pc端的活动,搞了一个多月,甚烦,因为相比于pc端,更喜欢移动端多一点.因为移动端又能搞我的react了. 今天主要总结一下react当中tab切换的几种方式,因为tab切换基本上都会用到. ...

  3. ASP.NET 页面之间传值的几种方式

    开篇概述 对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点.其实,对大部分高手来说,未必不是难点. 回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有 ...

  4. 【ASP.NET MVC系列】浅谈ASP.NET 页面之间传值的几种方式

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  5. IPC进程之间通信的几种方式

    概念 进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是 共享内存区 .但是,系统空间却是 ...

  6. jQuery Mobile页面跳转切换的几种方式

    jQuery Mobile在移动开发中越来越受到欢迎. 而他的各个版本号也在持续不断的更新中.相同的我也非常喜欢它,它加快了我们开发HTML5的速度. 同一时候又具备jQuery一样的操作方法. 学起 ...

  7. Liferay7 BPM门户开发之33: Portlet之间通信的3种方式(session、IPC Render Parameter、IPC Event、Cookies)

    文章介绍了5种方式,4种是比较常用的: Portlet session IPC Public Render Parameters IPC Event Cookies 参考地址: https://web ...

  8. Android Service与Activity之间通信的几种方式

    在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务,所以在我们实际开发中,就会常常遇到Activity与Service之间的通信,我们一般在Activ ...

  9. Vue组件之间通信的三种方式

    最近在看梁颠编著的<Vue.js实战>一书,感觉颇有收获,特此记录一些比价实用的技巧. 组件是MVVM框架的核心设计思想,将各功能点组件化更利于我们在项目中复用,这类似于我们服务端面向对象 ...

随机推荐

  1. 找出以“b”开头的名字

    找出以“b”开头的名字:select * from pet where name like 'b%' “_”:匹配任何单个字符“%”:匹配任意数目字符(包括零字符)

  2. Eclipse和MyEclipse使用技巧--MyEclipse下创建的项目导入到Eclipse中详细的图文配置方法

    一.情景再现. 有些人比较喜欢用Myeclipse开发,有些人却比较喜欢用eclipse开发.但是其中有一个问题,Myeclipse里面的项目导入的时候出现了一个小小的问题. 如下: 二.说明问题 导 ...

  3. Comparable 与 Comparator

    Comparable & Comparator 都是用来实现集合中元素的比较.排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序 ...

  4. [转]VUE优秀UI组件库合集

    原文链接 随着SPA.前后端分离的技术架构在业界越来越流行,前端的业务复杂度也越来越高,导致前端开发者需要管理的内容,承担的职责越来越多,这一切,使得业界对前端开发方案的思考多了很多,以react.v ...

  5. 【LeetCode】217. Contains Duplicate (2 solutions)

    Contains Duplicate Given an array of integers, find if the array contains any duplicates. Your funct ...

  6. 遇到影响服务器性能的cpuspeed 服务

    最近碰到一个很蛋痛的问题,,我在公司的代码上实现了一个功能,然后基于这个测试,结果比对数据发现每天少三千多万条,, 然后我各种优化,各种零碎部功能阉割,,还是丢数据! 之后,监控运行网卡----wat ...

  7. 自动化部署必备技能—搭建YUM仓库

    导言: YUM主要用于自动安装.升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系.要成功的使用YUM工具安装更新软件或系统,就需要有一个包含各种rpm软件包的repository(软件仓库) ...

  8. 怎样看待IT界业务,技术,管理的各自比重

    怎样看待IT界业务,技术,管理的各自比重   技术是根本,业务是个人能力的体现,管理一般随意,追求简单,眼光向IBM等有优秀管理经验的大公司看齐   重点从个人的喜好.性格方面来考虑分配比重,可以加上 ...

  9. k8s之Service

    一.概述 在k8s中暴露Service访问(无论内部还是外部),都要经过kube-proxy: 如下图:

  10. Android App优化之ANR详解

    引言 背景:Android App优化, 要怎么做? Android App优化之性能分析工具 Android App优化之提升你的App启动速度之理论基础 Android App优化之提升你的App ...