在iPad上modal有四种切换方式,分别是竖直进入(由下到上,默认方式)、水平翻转、淡入淡出。

属性要设置在将要modal出来的控制器上:

  1. /*
  2. typedef NS_ENUM(NSInteger, UIModalTransitionStyle) {
  3. UIModalTransitionStyleCoverVertical = 0,
  4. UIModalTransitionStyleFlipHorizontal,
  5. UIModalTransitionStyleCrossDissolve,
  6. UIModalTransitionStylePartialCurl NS_ENUM_AVAILABLE_IOS(3_2),
  7. };
  8. */
  9.  
  10. // 注意iOS7翻页(UIModalTransitionStylePartialCurl)只能漏出下面控制器的一部分,注意翻页只能在控制器全屏显示时使用。
  11. vc.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

除了进入方式,还有展示方式,常用的展示方式是FormSheet,这个方式不会全屏展示,而是在屏幕中央的小区域展示。PageSheet显示一个宽度固定为768点,高度随屏幕变化的页面。

  1. /*
  2. typedef NS_ENUM(NSInteger, UIModalPresentationStyle) {
  3. UIModalPresentationFullScreen = 0,
  4. UIModalPresentationPageSheet NS_ENUM_AVAILABLE_IOS(3_2),
  5. UIModalPresentationFormSheet NS_ENUM_AVAILABLE_IOS(3_2),
  6. UIModalPresentationCurrentContext NS_ENUM_AVAILABLE_IOS(3_2),
  7. UIModalPresentationCustom NS_ENUM_AVAILABLE_IOS(7_0),
  8. UIModalPresentationOverFullScreen NS_ENUM_AVAILABLE_IOS(8_0),
  9. UIModalPresentationOverCurrentContext NS_ENUM_AVAILABLE_IOS(8_0),
  10. UIModalPresentationPopover NS_ENUM_AVAILABLE_IOS(8_0),
  11. UIModalPresentationNone NS_ENUM_AVAILABLE_IOS(7_0) = -1,
  12. };*/
  13. // PageSheet宽度固定为768,高度为当前屏幕高度
  14. // FormSheet在中央显示一小块,常用,注意和popover区分。
  15. vc.modalPresentationStyle = UIModalPresentationFormSheet;

modal的方式还是原来的方法, 并且dismiss时按照设定的方式退出。

  1. [self presentViewController:vc animated:YES completion:nil];

从控制器1触摸modal控制器2的完整代码如下:

  1. - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
  2.  
  3. ViewController2 *vc = [[ViewController2 alloc] init];
  4. vc.view.backgroundColor = [UIColor redColor];
  5.  
  6. /*
  7. typedef NS_ENUM(NSInteger, UIModalTransitionStyle) {
  8. UIModalTransitionStyleCoverVertical = 0,
  9. UIModalTransitionStyleFlipHorizontal,
  10. UIModalTransitionStyleCrossDissolve,
  11. UIModalTransitionStylePartialCurl NS_ENUM_AVAILABLE_IOS(3_2),
  12. };
  13. */
  14.  
  15. // 注意iOS7翻页(UIModalTransitionStylePartialCurl)只能漏出下面控制器的一部分,注意翻页只能在控制器全屏显示时使用。
  16. vc.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
  17.  
  18. /*
  19. typedef NS_ENUM(NSInteger, UIModalPresentationStyle) {
  20. UIModalPresentationFullScreen = 0,
  21. UIModalPresentationPageSheet NS_ENUM_AVAILABLE_IOS(3_2),
  22. UIModalPresentationFormSheet NS_ENUM_AVAILABLE_IOS(3_2),
  23. UIModalPresentationCurrentContext NS_ENUM_AVAILABLE_IOS(3_2),
  24. UIModalPresentationCustom NS_ENUM_AVAILABLE_IOS(7_0),
  25. UIModalPresentationOverFullScreen NS_ENUM_AVAILABLE_IOS(8_0),
  26. UIModalPresentationOverCurrentContext NS_ENUM_AVAILABLE_IOS(8_0),
  27. UIModalPresentationPopover NS_ENUM_AVAILABLE_IOS(8_0),
  28. UIModalPresentationNone NS_ENUM_AVAILABLE_IOS(7_0) = -1,
  29. };*/
  30. // PageSheet宽度固定为768,高度为当前屏幕高度
  31. // FormSheet在中央显示一小块,常用,注意和popover区分。
  32. vc.modalPresentationStyle = UIModalPresentationFormSheet;
  33.  
  34. [self presentViewController:vc animated:YES completion:nil];

(一〇七)iPad开发之modal的切换方式与展示方式的更多相关文章

  1. (一〇六)iPad开发之UIPopoverController的使用

    很多App里都有一种点击显示的悬浮气泡菜单,例如下图: 在iPad上可以使用UIPopoverController实现这个功能,popoverController继承自NSObject而不是UIVie ...

  2. iOS iPad开发之UIPopoverController的使用

    1. 什么是UIPopoverController? 是iPad开发中常见的一种控制器(在iphone上不允许使用) 跟其他控制器不一样的是,它直接继承自NSObject,并非继承自UIViewCon ...

  3. iOS开发之App主题切换完整解决方案(Swift版)

    本篇博客就来介绍一下iOS App中主题切换的常规做法,当然本篇博客中只是提到了一种主题切换的方法,当然还有其他方法,在此就不做过多赘述了.本篇博客中所涉及的Demo完全使用Swift3.0编写完成, ...

  4. Android开发之多Fragment切换优化

    问题分析 一直在简书里看别人的技术贴,今天我也来写点自己的心得!最近在写一个项目用到大量的Fragment后的总结! 我想刚刚接触安卓的同学或许会这么写: FragmentManager fragme ...

  5. web 开发之js---ajax 中的两种提交方式ajax post 和 ajax get 实例

    ()post http://04101334.iteye.com/blog/637695/ ()get function serializeElement(element) { var method ...

  6. UWP开发之Mvvmlight实践七:如何查找设备(Mobile模拟器、实体手机、PC)中应用的Log等文件

    在开发中或者后期测试乃至最后交付使用的时候,如果应用出问题了我们一般的做法就是查看Log文件.上章也提到了查看Log文件,这章重点讲解下如何查看Log文件?如何找到我们需要的Packages安装包目录 ...

  7. 移动前端开发之viewport,devicePixelRatio的深入理解

    移动前端开发之viewport的深入理解 在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有明白了viewport的概念以及弄清楚了跟viewport有关的met ...

  8. DarkStone - 跨平台移动应用开发之 Flex 的崛起

    我的好友Ds 发布一个flex的消息.我帮忙转发 DarkStone - 跨平台移动应用开发之 Flex 的崛起 (2013-08-20 22:28:32)     此文章由 周戈 (DarkSton ...

  9. 【Android UI】Android开发之View的几种布局方式及实践

    引言 通过前面两篇: Android 开发之旅:又见Hello World! Android 开发之旅:深入分析布局文件&又是“Hello World!” 我们对Android应用程序运行原理 ...

随机推荐

  1. [bzoj4874]筐子放球

    来自FallDream的博客,未经允许,请勿转载,谢谢. 小N最近在研究NP完全问题,小O看小N研究得热火朝天,便给他出了一道这样的题目: 有 n 个球,用整数 1 到 n 编号.还有 m 个筐子,用 ...

  2. 浅谈java中内置的观察者模式与动态代理的实现

    一.关于观察者模式 1.将观察者与被观察者分离开来,当被观察者发生变化时,将通知所有观察者,观察者会根据这些变化做出对应的处理. 2.jdk里已经提供对应的Observer接口(观察者接口)与Obse ...

  3. 00-Unit_Common综述-RecyclerView封装

    自学安卓也有一年的时间了,与代码相伴的日子里,苦乐共存.能坚持到现在确实已见到了"往日所未曾见证的风采".今2018年4月2日,决定用一个案例:Unit_Common,把安卓基础的 ...

  4. RTX 无法刷新组织架构的处理方法总结

    文章一: 刷新组织架构问题1."客户端不能获取正确的组织架构"或"新增加的人员刷新不了组织架构"首先要判断是RTX服务器引起的异常还是一些客户端出现的异常,判断 ...

  5. C++Sizeof与Strlen的区别与联系

    一.sizeof    sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等.    它的功能是:获得保 ...

  6. swift之属性

    知识点总结: 1.存储属性 struct Town{ let region = "South" //只读属性 var population = //读写属性 } 2.惰性存储属性 ...

  7. c++ 文件操作详解

    C++ 通过以下几个类支持文件的输入输出: ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类(由istream引申而来) fstre ...

  8. Emacs Python 自动补全--Elpy

    安装方法: 首先,安装一些依赖包: # Either of these pip install rope pip install jedi # flake8 用来检查语法错误 pip install ...

  9. Node.js ZLIB

    Zlib 稳定性: 3 - 文档 可以通过以下方式访问这个模块: var zlib = require('zlib'); 这个模块提供了对 Gzip/Gunzip, Deflate/Inflate, ...

  10. npm killed有可能是内存不够, 为Ubuntu增加swap

    参考 http://www.cnblogs.com/owenyang/p/4282283.html 查看swap使用策略 cat /proc/sys/vm/swappiness 0代表尽量使用物理内存 ...