UIViewContrller之间切换的几种方式
对应的返回操作函数:[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;
对应的调用函数:[self.navigationController pushViewController:ctrl animated:YES];
返回:[self.navigationController popViewControllerAnimated:YES];,
也可直接指定返回到那一个ViewController:
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated
还可以直接返回到RootViewController:- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated
UITabBarContrller对象有一个属性selectedIndex,设置初始时默认展示的ViewController。
而当点击tabBarItem时触发切换操作 都会回调UITabBarControllerDelegate中的一个方法
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *) viewController
视图切换,没有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之间切换的几种方式的更多相关文章
- 【百度地图API】关于如何进行城市切换的三种方式
原文:[百度地图API]关于如何进行城市切换的三种方式 摘要:本文介绍了三种切换城市的方式:查询城市.城市列表和显示城市轮廓. ------------------------------------ ...
- 【原】react做tab切换的几种方式
最近搞一个pc端的活动,搞了一个多月,甚烦,因为相比于pc端,更喜欢移动端多一点.因为移动端又能搞我的react了. 今天主要总结一下react当中tab切换的几种方式,因为tab切换基本上都会用到. ...
- ASP.NET 页面之间传值的几种方式
开篇概述 对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点.其实,对大部分高手来说,未必不是难点. 回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有 ...
- 【ASP.NET MVC系列】浅谈ASP.NET 页面之间传值的几种方式
ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...
- IPC进程之间通信的几种方式
概念 进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是 共享内存区 .但是,系统空间却是 ...
- jQuery Mobile页面跳转切换的几种方式
jQuery Mobile在移动开发中越来越受到欢迎. 而他的各个版本号也在持续不断的更新中.相同的我也非常喜欢它,它加快了我们开发HTML5的速度. 同一时候又具备jQuery一样的操作方法. 学起 ...
- 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 ...
- Android Service与Activity之间通信的几种方式
在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务,所以在我们实际开发中,就会常常遇到Activity与Service之间的通信,我们一般在Activ ...
- Vue组件之间通信的三种方式
最近在看梁颠编著的<Vue.js实战>一书,感觉颇有收获,特此记录一些比价实用的技巧. 组件是MVVM框架的核心设计思想,将各功能点组件化更利于我们在项目中复用,这类似于我们服务端面向对象 ...
随机推荐
- OSWorkFlow 学习
1.OSWorkFlow基本概念 在商用和开源世界里,OSWorkflow 都不同于这些已有的工作流系统.最大不同在于 OSWorkflow 有着非常优秀的灵活性.在开始 接触 OSWorkflow ...
- RHEL7体验KVM虚拟机
KVM是基于内核2.6+的虚拟化,前提是硬件须支持虚拟化! Red Hat Enterprise Virtualization-Management,即RHEV-M(管理多个RHEV-H系统) 虚拟化 ...
- OSS设置CORS规则以后还是报No 'Access-Control-Allow-Origin'解决方法
OSS设置CORS规则以后还是报No 'Access-Control-Allow-Origin'解决方法 在OSS控制台设置了CORS规则以后,通过JS程序去调用的时候报No 'Access-Cont ...
- 推荐一款VS2008代码增强插件——MetalScroll
时光如水,岁月如歌.虽然现在已经是2013年底马上就要步入2014了,但还是有很多人在使用VS2008开发项目,今天要推荐一款VS2008(同时支持VS2005,但不支持VS2010)代码增强插件给仍 ...
- hihocoder第229周:最大连续字母个数
题目链接 给定一个仅包含小写字母的字符串s(长度小于1e5),你可以交换任意两个字符的位置,现在允许交换k次,要求交换之后,s中最长的连续相同字符个数尽量多,求这个最长连续区间的长度. 样例 输入 1 ...
- 【RS】Local Latent Space Models for Top- N Recommendation-利用局部隐含空间模型进行Top-N推荐
[论文标题]Local Latent Space Models for Top- N Recommendation (KDD-2018 ) [论文作者]—Evangelia Christakopou ...
- 【MATLAB】matlabR2010a与vs2010联合编译设置
在matlab中编译C++程序,首先要配置编译器>> mex -setupPlease choose your compiler for building external interfa ...
- Jetty使用内存过大的解决方案
之前用Jetty做过一个消息通知服务器,主要功能就是其他各个子系统如果有需要push给客户端消息的就把这个消息发给我的Server,我用WebSocket来推送给客户端~ 程序上线一段时间之后运维工程 ...
- mysql5.7创建用户授权删除用户撤销授权
一, 创建用户: 命令: CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - ...
- Sentinel 简介与API订阅发布
Sentinel 简介 Redis 的 Sentinel 系统用于管理多个 redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel 会不断 ...