左右presentViewController经background黑问题
看效果图:
用例如以下代码,想弹出一个模态窗体,设置它的背景透明度为0.5,却发觉prsent后的背景色变为黑色的。
ShareVC *share = [[ShareVC alloc] init];
[self presentViewController:share animated:YES completion:nil];
起初还以为是设置透明度或者是[UIColor clearColor]出的问题,鼓捣几次之后发现不是这个问题。
google之后,在stackOverflow上找到几个比較靠谱的答案~
Why
Does presentModalViewController:animated: Turn The Background Black?
Display
clearColor UIViewController over UIViewController
终于结论为:
NavigationController and the View Controllers are designed in such a way that only one view controller may show at a time. When a new view
controller is pushed/presented the previous view controller will be hidden by the system. So when you reduce the modal view's alpha you will possibly see the window's backgroundColor (the black color you see now).
If you want a translucent view to slide-in over the main view, you can add the view as the subView of main view and animate it using UIView Animations.
所以还是改用为UIView Animations实现:
if (!_isShareViewOpen) {
_isShareViewOpen = YES;
ShareVC *shareVC = [[ShareVC alloc] initWithNibName:@"ShareVC" bundle:nil];
shareVC.shareVC = shareVC;
shareVC.awardList = self;
[self.view addSubview:shareVC.view];
[UIView animateWithDuration:0.75f animations:^{
shareVC.view.frame = CGRectMake(0, 640, self.view.frame.size.width, self.view.frame.size.height);
shareVC.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
} completion:^(BOOL finished) {
}];
}
--------------------------------------------------------------------------2014.09.26 再次编辑 ------------------------------------------------------------------
假设你不想用动画来实现 present 的效果,能够设置 presentViewController 的属性,一样能够达到以上效果:
presentingViewController.modalPresentationStyle = <span style="font-family: Arial, Helvetica, sans-serif;">UIModalPresentationCurrentContext</span>;
--------------------------------------------------------------------------2015.01.22 再次编辑 ------------------------------------------------------------------
以上代码仅仅是在 IOS7 中起作用。到 IOS8 就没用了,IOS8 能够用下面代码 fix:
_imagePickerCtrl.modalPresentationStyle = UIModalPresentationOverCurrentContext;
_imagePickerCtrl.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; [appViews.rootViewController presentViewController:_imagePickerCtrl animated:YES completion:nil];
版权声明:本文博主原创文章,博客,未经同意不得转载。
左右presentViewController经background黑问题的更多相关文章
- js判断background颜色明暗色调,以设置白/黑字体颜色
整理自:jscolor.js插件 this.styleElement.style.color = this.isLight() ? '#000' : '#FFF'; this.isLight ...
- [FMX] Android APP 启动黑屏优化补丁
使用说明 *************************************************** Android APP 启动黑屏优化补丁 作者: Swish, YangYxd 201 ...
- ie8下jquery改变PNG的opacity出现黑边,ie6下png透明解决办法
目前互联网对于网页效果要求越来越高,不可避免的用到PNG图片,PNG分为几种格 式,PNG8 PNG24 PNG32,其中最常用的,也是显示效果和大小比较适中的则是PNG24,支持半透明,透明,颜色也 ...
- IOS UISearchDisplayController 点击搜索出现黑条问题解决方案
最近项目遇到一个很奇葩的问题 点击按钮启动 presentViewController 的时候出现下图效果: 代码: AddFriendViewController *addFriendVC = [[ ...
- PyOpenGL利用文泉驿正黑字体显示中文字体
摘要:在NeHe的OpenGL教程第43课源代码基础上,调用文泉驿正黑字体实现中文字体的显示 在OpenGL中显示汉字一直是个麻烦的事情,很多中文书籍的文抄公乐此不疲地介绍各种方法及其在windows ...
- Android 启动APP时黑屏白屏的三个解决方案
你会很奇怪,为什么有些app启动时,会出现一会儿的黑屏或者白屏才进入Activity的界面显示,但是有些app却不会如QQ手机端,的确这里要做处理一下.这里先了解一下为什么会出现这样的现象,其实很简单 ...
- android开发 解决启动页空白或黑屏问题
遇到的情况: app启动时进入启动页时出现白屏页,然后大概一秒之后就出现了背景图片. 原因:app启动时加载的是windows背景,之后再加载布局文件的,所以开始的黑屏/白屏就是windows的背景颜 ...
- 【安卓特效】怎样给ImageView加上遮罩,点击时泛黑、或泛白、?
基本思路: 方法1.遮罩可直接叠加一层带alpha的纯白.或纯黑View,可直接在ImageView外套一层FrameLayout,其foreground(一般同学可能仅仅知道background,事 ...
- presentViewController: 如何不覆盖原先的 viewController界面
PresentViewController 如何不遮挡住原来的viewController界面呢? 可能有时候会遇到这种需求,需要弹出一个功能比较独立的视图实现一些功能,但是却不想单纯添加一个View ...
随机推荐
- keil提示:missing ';' before 'XXX'但又找不到是哪里少了分号——已解决!
今天写一个51程序,keil在编译时总提示丢失了一个分号,但怎么都找不到是哪里丢失了分号,搞了一下午才解决问题,现在把经验在此分享,以求让他人不要犯同样的错误!提示信息为: LCD12864.H(20 ...
- 微信公众平台PHP开发
p=932" style="color: rgb(255, 153, 0); text-decoration: none;">微信公众平台PHP开发 2013.05 ...
- spring-bean属性配置解析
autowire属性值有 byName 根据Bean定义时的“id"属性上指定的别名与Setter名称是否一致进行自动装配 byType 根据PoJo的setXXX()方法所接受的类型判断b ...
- A股市场暴跌背后的三大元凶?
周一两市低开低走,盘中空方连续打压股指,大盘一路下行,沪指2000点关口告急,收于1963.24点,跌幅超过了5%.行业板块全线溃败.银行.证券领衔大幅杀跌,板块跌幅一度超过5%:继上周五中国石油A股 ...
- CentOS 7单用户模式修改root密码
CentOS 7的单用户模式和6.5稍有不同 把ro改成 "rw init=/sysroot/bin/sh". 完成之后按 "Ctrl+x" chroot /s ...
- hdu1565+hdu1569(最大点权独立集)
传送门:hdu1565 方格取数(1) 传送门:hdu1569 方格取数(2) 定理:1. 最小点权覆盖集=最小割=最大流2. 最大点权独立集=总权-最小点权覆盖集 步骤: 1. 先染色,取一个点染白 ...
- Linux档案种类与扩展名(2013.09.03)
档案种类: 正规档案(regular file ): 第一个字符为 [ -],例如 [-rwxrwxrwx ].另外,依照档案的内容,又大略可以分为: 纯文本档(ASCII) 二 ...
- Eclipse常用热键
,Ctrl+D 删除选中的几行 ,Alt+上下箭头 移动选中的代码块 ,Alt+左右箭头 回退 前进 ,Alt+Shift+上下箭头 复制选中的代码块 ,sysout+Ctrl space 生成Sys ...
- WPF换肤之六:酷炫的时区浏览小精灵
原文:WPF换肤之六:酷炫的时区浏览小精灵 由于工作需要,经常要查看到不同地区的 当前时间,以前总是对照着时区表来进行加减运算,现在有了这个小工具以后,感觉省心了不少.下面是软件的截图: 效果图赏析 ...
- Java 里把 InputStream 转换成 String 的几种方法
我们在 Java 中经常会碰到如何把 InputStream 转换成 String 的情形,比如从文件或网络得到一个 InputStream,需要转换成字符串输出或赋给别的变量. 未真正关注这个问题之 ...