添加半透明视图最简单的方法

项目中需要实现点击按钮出现的视图全屏覆盖,呈半透明状态可以看到下面的视图?

解决方案:

绕了很多弯路原来可以使用模态弹出一个视图控制器

在iOS8之后只需要设置一个最新的属性

SecondViewController *vc=[[SecondViewController alloc]init];
    vc.modalPresentationStyle = UIModalPresentationOverCurrentContext;这句代码很重要
    [self presentViewController:vc animated:NO completion:^{
//        vc.view.backgroundColor=[UIColor colorWithRed:0 green:0 blue:0 alpha:0.8];
        vc.view.backgroundColor = [UIColor orangeColor];
        vc.view.alpha = 0.5;
    }];

在iOS7或更低需要设置你的window.rootViewController.modalPresentationStyle = UIModalPresentationCurrentContext

AppDelegate *appdelegate=(AppDelegate*)[[UIApplication sharedApplication] delegate];
    UIViewController *vc=[[UIViewController alloc]init];
    appdelegate.window.rootViewController.modalPresentationStyle=UIModalPresentationCurrentContext;
    [appdelegate.window.rootViewController presentViewController:vc animated:YES completion:^{
        vc.view.backgroundColor=[UIColor colorWithRed:0 green:0 blue:0 alpha:0.8];
        appdelegate.window.rootViewController.modalPresentationStyle=UIModalPresentUIModalPresentationFullScreen;
    }];

实现完成后发现了一个bug, 如果当presentingVC有根视图控制器tabBarController,上面的设置会使tabBar未被覆盖,意思就好像是你有一直看到presentingVC直接导致不会走viewWiillAppear,不能在原视图即将出现时把隐藏tabBar的属性改回来。此时

在present的时候敲一行

self.tabBarController.tabBar.hidden = YES; // 隐藏tabBar

在dismiss的时候敲一行

self.presentingViewController.tabBarController.tabBar.hidden = NO; // 先获取弹出视图的视图控制器,再修改隐藏属性

原文地址:https://www.cnblogs.com/yyyyyyyyqs/p/9077889.html

时间: 2024-11-05 19:33:14

添加半透明视图最简单的方法的相关文章

Android使用ShowcaseView添加半透明操作提示图片的方法

http://beeder.github.io/2014/11/11/how-to-add-a-semi-transparent-demo-screen-using-showcaseview/ 这篇文章详细介绍了怎样使用ShowcaseView添加半透明操作提示图片的方法,以及完整源代码. 效果图如下:

动态添加子视图 UIView 的正确方法

很多时候哥比较喜欢用代码添加视图,特别是要同时加很多UIView时,而且跟 xib 比起来代码更容易管理,在多人的项目中代码不容易 conflict. 但小牛哥最近发现很多新人都不太清楚正确的使用方法,以下是哥的一些总结,有何不妥欢迎大家一起讨论: (前提条件是这样的:有一个 View Controller  和相应的 xib 文件,我们需要为这个controller 动态加上其他的子视图) UIViewController 中动态添加 UIView 正确的步骤应该是: 1. 在 viewDid

Linux CentOS 6.6 安装添加yum 源的简单处理方法

Linux CentOS  6.6 安装yum 源的简单处理方法 安装环境是:如下 [[email protected] ~]# cat /etc/redhat-release ========>查看的是版本 CentOS release 6.6 (Final) [[email protected] ~]# uname -r                ========>内核  2.6.32-504.el6.x86_64 [[email protected] ~]# 1.备份(必须要备份)

关于cell中添加子视图 复用重叠问题的解决方法

问题本质: 因为你要添加的子视图并不是在自定义的cell中实现的,而是根据系统给的UITableViewCell这个类创建的实例,每次进图 cellForRow方法都会创建一个cell,每次都要创建一个子视图添(button,label之类的)加进去,会给占用很大的内存,所以采用了复 用的方法,但是问题就来了,当cell超出界面,从队列中拿过来复用的时候,其中子视图的内容并没有消除,这样你会原来的基础上再创建一个子视图添加上去 遮住了原来的视图,一般视图都是透明的这样的话就变成了一层层的叠加.

PDF文件怎么添加页眉页脚,有什么简单的方法吗?

PDF文件怎么添加页眉页脚呢?我们现在对PDF文件也算是比较熟悉了,但是对于PDF文件怎么编辑还不是那么了解,其实我们想要给PDF文件添加页眉页脚也需要使用到迅捷PDF编辑器,下面小编就为大家操作一下PDF编辑器给PDF文件添加页眉页脚的操作步骤, 操作软件:迅捷PDF编辑器 1:我们将PDF编辑器安装到自己的电脑中,双击将PDF编辑器打开,然后将需要编辑的PDF文件添加到软件中来. 2:在软件的顶部找到文档,点击文档可以找到页眉页脚,点击页眉页脚就可以找到添加了. 3:点击添加就会出现一个弹窗

Android 添加子视图(addView和setView)

我们在添加视图文件的时候有两种方式,一种是通过在xml文件定义layout,另一种方式是在java代码中动态生成布局文件. 在xml中定义的layout要想转化为view,需要使用到LayoutInflater类. 1.构造xml文件 2.LayoutInflater 提到addview,首先要了解一下LayoutInflater类.这个类最主要的功能就是实现将xml表述的layout转化为View的 功能.为了便于理解,我们可以将它与findViewById()作一比较,二者都是实例化某一对象

精通IOS-在表单元中添加子视图

#import <UIKit/UIKit.h> @interface NameAndColorCellTableViewCell : UITableViewCell @property(copy,nonatomic) NSString *name; @property(copy,nonatomic) NSString *color; @end NameAndColorCellTableViewCell.h // // NameAndColorCellTableViewCell.m // Tab

UI第九讲.UITableView表视图创建,表视图的重用机制,表视图的相关配置方法

一.UITableView表视图创建 1>.基本属性: UITableView继承自UIScrollView,所以可以滚动          表视图的每一条数据都是显示在UITableViewCell对象中          表视图可以分区显示数据,每个分区称为一个section,每一行称为row,编号都是从0始 2>.重要用法: 最重要的是两个代理方法 <UITableViewDelegate,UITableViewDataSource>(其中必须实现的是 numberOfRow

新浪微博开发-添加子视图控制器&amp;设置颜色

一.添加子视图控制器 二.设置颜色 设置颜色:两种方法 一种较为繁琐,详见视频 第二种: //设置颜色 self.tabBar.tintColor = UIColor.orangeColor()