[iOS基础]从使用UIPopoverController到UIViewController弹出模态

描述

在iPad中,UIPopoverController可以说比较常见,比如点击某个按钮,会弹出一个带箭头的View,可以在View上进行操作,点击View的其他领域,View消失。

使用

UIPopoverController的使用至少有如下 4 步:

//第一步:通过一个UIViewController初始化一个UIPopoverController,其中exportViewCon是已经定义好的UIViewController
UIPopoverController *popPreCon = [[UIPopoverController alloc] initWithContentViewController:exportViewCon];
//第二步:指定UIPopoverController的视图大小
popPreCon.popoverContentSize = CGSizeMake(320, 506);
//第三步:指定唤起UIPopoverController的UIBarButton以及UIPopoverController的箭头方向
//第四步:展示出来
[popPreCon presentPopoverFromBarButtonItem:self.navigationItem.rightBarButtonItem permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

细节

当然,UIPopoverController也有其他的一些属性,包括一个UIPopoverControllerDelegate,详见链接:UIPopoverController。然而当你打开后你会发现,TMD都是划横线了(被苹果舍弃了)!!
原因是因为上面的代码只能在iPad上面运行,但是如果想要在iPhone上面也运行,就需要使用下面的方式:

iOS8 新特性

UIPopoverPresentController和UIModelPresentationPopover

//示例代码
//第一步:初始化UIViewController
ExportViewController *exportViewCon = [[ExportViewController alloc] init];
//第二步:将UIViewController封装成为Popover
exportViewCon.modalPresentationStyle = UIModalPresentationPopover;
//第三步:设置popoverPresentationController的button or barbtton
exportViewCon.popoverPresentationController.barButtonItem = self.navigationItem.rightBarButtonItem;
//第四步:设置popover的size
exportViewCon.preferredContentSize = CGSizeMake(320, 506);
//第五步:展示出来    
[self presentViewController:exportViewCon animated:YES completion:nil];

UIViewController弹出模态

原来的UIPopoverController继承自UIViewController,实现需要用UIPopoverController去封装需要展现的UIViewController。
现在UIViewController变得更加强大,只需要更改一下弹出模态的style就能够有相应的效果:

UIModalPresentationStyle展现的形态

UIModalPresentationStyle效果
UIModalPresentationFullScreen全屏,portrait和landscape一样
UIModalPresentationPageSheetlandscape非全屏两边会有暗色留空,portrait则全屏
UIModalPresentationFormSheet非全屏,四周会有暗色留空
UIModalPresentationCurrentContext与父辈Controller一致
UIModalPresentationCustom自定义模式
UIModalPresentationOverFullScreen与非Over的区别在于底层的Views并不会被remove,因此如果ViewController没有全覆盖,底层的Views会透出来
UIModalPresentationOverCurrentContextUIKit会查找哪个UIViewController的definesPresentationContext是YES,就用哪个作为style,Over效果同FullScreen效果一样,如果在popover上弹出视图,一定要用CoverVertical效果,否则异常
UIModalPresentationPopover就是Popover啦
UIModalPresentationNone一般不用该style,但是可以adaptivePresentationStyleForPresentationController: 方法返回该字段实现与之前不同的弹出模态

UIModalTransitionStyle弹出的效果

UIModalTransitionStyle效果
UIModalTransitionStyleCoverVertical从底下滑出来,从底下滑出去
UIModalTransitionStyleFlipHorizontal从右边滑出来,从右边滑出去
UIModalTransitionStyleCrossDissolve渐变出来与消失
UIModalTransitionStylePartialCurl类似于翻书效果,一般父辈Controller要用FullScreen模式,否则异常
//弹出Controller,此时self是父辈Controller
[self presentViewController:exportViewCon animated:YES completion:nil];
//销毁Controller此时self是弹出的Controller
[self dismissViewControllerAnimated:YES completion:nil];

参考文章:http://blog.csdn.net/james_1010/article/details/8845830

【课程概括】 包含常量与变量、基本数据类型,以及Swift语言中的新数据类型—元组型和可选型的内容。同时还讲解了运算符和表达式、流程控制语句、字符和字符串、集合类型、函数和闭包。此外,Swift面向对象的枚举、结构体、类,以及内存管理、协议与抽象类型、错误处理、链式编程、iOS开发中的常见概念等内容也有所涉及。在第八章我们使用Swift语言实现了栈、队列、二叉树等数据结构,还实现了常见的8种排序算法。第九章则包含了证书的创建、项目的架构、开发、打包、上传和发布一整套流程,供您学以致用。 【课程特点】 1、119节大容量课程:包含了Swift 5.0语言大部分知识点; 2、创新的教学模式:手把手教您iOS开发技术,一看就懂,一学就会; 3、贴心的操作提示:让您的眼睛始终处于操作的焦点位置,不用再满屏找光标; 4、语言简洁精练:瞄准问题的核心所在,减少对思维的干扰,并节省您宝贵的时间; 5、视频短小精悍:即方便于您的学习和记忆,也方便日后对功能的检索; 【移动端客户评价】 『五个星不够,想给十个。本来我是学通信的学生,发现h5可以打包成iOS app,但是继续学下去发现很多iOS资源用不了,于是就来学iOS开发,老师的课很好,我把他的iOS开发三件套课程全部买了,老师梳理的脉络很清晰,绝对可以节省你很多学习的时间成本,不用你一知半解的胡乱Google,三套课程150,绝对的良心价。远比培训班便宜,也比书便宜。还要说一句,老师的课绝对脉络清晰,不懂的概念去Google,Google完还是不懂也没关系,后续的课程慢慢就会让你理解,所以前期不懂不要急,不要急于问为什么,慢慢你就会理解为什么。好了,送给准备入坑iOS开发的大家一句话:编程不要眼高手低。』  评论人: 180470185 – Sep 3, 2018
更好的应用,更少的代码! SwiftUI是苹果主推的下一代用户界面搭建技术,具有声明式语法、实时生成界面预览等特性,可以为苹果手机、苹果平板、苹果电脑、苹果电视、苹果手表五个平台搭建统一的用户界面。 SwiftUI是一种创新、简单的iOS开发中的界面布局方案,可以通过Swift语言的强大功能,在所有的Apple平台上快速构建用户界面。 仅使用一组工具和API为任何Apple设备构建用户界面。 SwiftUI具有易于阅读和自然编写的声明式Swift语法,可与新的Xcode设计工具无缝协作,使您的代码和设计**同步。自动支持动态类型、暗黑模式、本地化和可访问性,意味着您的**行SwiftUI代码已经是您编写过的非常强大的UI代码了。 【课程特点】 1、196节大容量课程:包含了SwiftUI的大部分知识点,详细讲解SwiftUI的方方面面; 2、15个超级精彩的实例:包含美食、理财、健身、教育、电子商务等各行业的App实例; 3、创新的教学模式:手把手教您SwiftUI用户界面开发技术,一看就懂,一学就会; 4、贴心的操作提示:让您的眼睛始终处于操作的焦点位置,不用再满屏找光标; 5、语言简洁精练:瞄准问题的核心所在,减少对思维的干扰,并节省您宝贵的时间; 6、视频短小精悍:即方便于您的学习和记忆,也方便日后对功能的检索; 7、齐全的学习资料:提供所有课程的源码,在Xcode 11 + iOS 13环境下测试通过;
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页