IOS UIViewController如何透明 与安卓的Activiy的区别,新手学习
来源:互联网 发布:淘宝网运动器材 编辑:程序博客网 时间:2024/06/11 02:25
先贴打开透明UIViewController代码
var vc = DetailViewController(); vc.modalPresentationStyle = .Custom self.presentViewController(vc, animated: true, completion: nil)
我的个人理解
在这里,先说一下安卓的打开页面方式 startActivity(intent); startActivityForResult(intent, requestCode); 会安卓的都知道 startActivity是Context的函数,而startActivityForResult是 Activity的函数 在IOS中,类似 startActivity的打开方式presentViewController Activity 可以理解为 UIViewController 而要打开一个透明的Activity,我们在安卓中,只要配置window的背影色为透明色,就可了. 而在IOS中,设置背影透明色,是不可行的 这里先说,为什么不行.IOS每打开一个UIViewController会对应一个UITransitionView 就 是所谓的UIViewController的最底层的一个View.当然,它也是一个画布画出来的View而已 首先:UIVindow是每一个IOS的项目的最底层的一个容器 而每次打开一个UIViewController,会在UIVindow添加一个UIViewController 层次关系是这样的 UIVindow UITransitionView UITransitionView UITransitionView 注:重点在这里,永远只有一个 UIVindow,每打开一个UIViewController,就会添加一个 UITransitionView 在每个UITransitionView中都存在一个UIView,这个,就是在UIViewController中的 self.view 这个如果不搞清楚,层级关系乱掉了,页面会麻烦的. 我们想做到的透明,就是把UITransitionView给透明掉.这个思路,本身是没有错的,但是 UITransitionView透明之后呢?你想看到的是上一个页面的UITransitionView,就是上个页 面的self.view的内容. 不管怎么做,都做不到透明看到上个页面的东西. IOS的机制是这样设定的,你要打开一个页面,要声明,这个页面是不是透明的,如果你不设置.默认 是不透明的,在你打开一个新的UITransitionView的时候,你只能看到在这个页面的所包含的 view,而上个页面的UITransitionView中的view都是被隐藏的,所以,你只能看到一个黑色的 背影,这个黑色,就是UIVindow的背影色了 默认的结果是这样的: UIVindow UITransitionView(上上页) UITransitionView(上页) UITransitionView(当前的页) UIView(即self.view) 所以,不设置打开模式为透明,是做不到透明的. 打开默认的设置是这样的: modalPresentationStyle = .Custom modalPresentationStyle是UIViewController的函数. 只要声明,打开为此模式,就好了.这个时候,页面结构是这样的 UIVindow UITransitionView(上上页) UITransitionView(上页) UIView(即self.view) UITransitionView(当前的页) UIView(即self.view) 这样,就可以看到上个页面的self.view了,就达到了透明的效果了 打开透明的代码如下: var vc = DetailViewController(); vc.modalPresentationStyle = .Custom self.presentViewController(vc, animated: true, completion: nil) 注:如果加打开动画,即UIViewControllerAnimatedTransitioning这种打开动画的转场模 式,在这里的添加View的时候,进行处理,就OK了.
0 0
- IOS UIViewController如何透明 与安卓的Activiy的区别,新手学习
- xamarin学习笔记A03(安卓Activiy)
- IOS与安卓的区别
- UITableViewController与UIViewController的区别
- UIViewController present出来一个透明的UIViewController
- IOS中 UIView和UIViewController的区别
- IOS 不同的 UIViewController 之间如何跳转
- 安卓开发基础新手必知java知识之接口与抽象类的区别
- IOS 创建透明UIViewController
- IOS学习 UIViewController 视图控制器的创建
- 软件测试,ios与安卓的区别
- iOS与安卓的区别 浅谈ios为什么比安卓流畅
- Activiy的布局加载流程
- android activiy判断当前activiy是不是前台显示的。
- IOS-UIViewController的生命周期
- ios UIViewController的生命周期
- IOS-UIViewController的生命周期
- IOS:UIViewController的生命周期
- 判断js对象是否拥有某一个属性的js代码
- 用Navicat进行数据结构同步操作
- 已知圆心,半径,角度,求圆上的点坐标
- Github
- bzoj 1576: [Usaco2009 Jan]安全路经Travel(dijkstra堆优化+并查集)
- IOS UIViewController如何透明 与安卓的Activiy的区别,新手学习
- mysql truncate/delete/drop 删除表数据
- poj 2187(凸包+旋转卡壳)
- 绑定qt的sqldriver一起发布。
- HDOJ(HDU) 2078 复习时间
- 写了一个定时器类,以方便应用
- Mysql跨平台(Windows,Linux,Mac)使用与安装
- Linux配置Jenkins建立Maven Job持续发布项目到Tomcat
- swift - mutating(杖举或结构体,通过方法来改变自身的值)