,可以通过以下步骤实现:
这样,遮罩UIView下除背景之外的所有视图就会被隐藏起来,只显示背景视图。
这种遮罩效果在实际开发中常用于实现弹窗、提示框、菜单等功能。通过隐藏除背景之外的其他视图,可以使用户集中注意力于弹出的内容,提高用户体验。
腾讯云相关产品推荐:
以上是腾讯云提供的一些与移动开发相关的产品,可以帮助开发者实现移动应用的数据分析、消息推送、函数计算和容器化部署等功能。
// 背景蒙层视图 @property (nonatomic, strong) UIView *backgroundView; // 弹出视图 @property (nonatomic, strong...,然后在BaseView.h中的注释我们说过了,点击背景遮罩图层和取消、确定按钮的点击事件实现效果在基类中都是空白的,具体效果在子类中进行重写来控制。...self.topView addSubview:self.titleLabel]; // 添加分割线 [self.topView addSubview:self.lineView]; } 二是我们的背景蒙层和弹出视图大家可以通过代码看到蒙层遮罩背景的布局是整个屏幕...如果直接在蒙层上添加弹出式图作为子视图的话,我们的布局相对会简单很多,这里涉及到一点就是子视图的透明度是和父视图保持一致的,如果直接将弹出视图加载到蒙层遮罩视图上,会导致弹出视图的透明度也为0.3,所以弹出视图不能直接加在蒙层遮罩视图上...,还是先把所有代码都贴上来,有点多,所以折叠一下,后面对其中一些要点进行列出说明一下。
What's UIView在iOS开发中,这个使用频率非常高的控件,同时在iOS 所有原生的视图都是由UIView派生而来....视图在屏幕上可以是一个矩形块,它能够拦截类似鼠标点击或者触摸手势等用户交互方式. 并且在层级关系上可以互相嵌套,一个视图可以管理它所有的子视图的位置等.在开发项目过程中,这是非常常见的一个使用场景....也可以填充为图片,文本或者背景颜色等. 也能管理子视图的位置.甚至CALayer 是有很多方法和属性来做动画处理和变换处理....Core Animation的底层之外,别无他选....图层不能处理触摸事件,同样也要视图不能做的事情: 阴影,圆角,颜色边框 3D变换 非矩形范围 透明遮罩 多级非线性动画 CALayer's function 除了CALayer 类,CoreAnimation
天使”礼物动画,我们来剖析下这个动画的构成。...、变大 alpha值属性是透明度,把背景设置成淡黑色,然后调整alpha可以达到背景渐变的视图效果; UIView的transform是可以用仿射变换矩阵来控制平移、放大缩小等。...alpha的变化,但是UIView的block动画不好实现重复效果; UIView的alpha对应的是layer的opacity属性,设定好起始、过度和结束的状态,实现闪烁的效果。...出现、烟花爆炸、画卷打开等效果,通过改变遮罩的大小,影响原始图片的展示,达到动画的效果; 先新建一个CAShapeLayer,并设置为layer的遮罩; 新建一个动画,设定初始和结束状态并赋值给CAShapeLayer...直播APP的性能优化-礼物篇 iOS开发-视图渲染与性能优化 都有,不再赘述。
前言 有时你会看到很多镂空的试图或者是镂空视图的动画效果,感觉很酷炫,其实只要掌握其中实现的原理,想实现怎样的效果就能实现怎样的镂空效果。 原理解析 UIView的maskView属性。...通过控制UIView的maskView、CALayer的mask有效区域,都可以修改UIView和 UIView的layer的显示外形,从而得到镂空或者其他的奇特形状及其动画。...,这种情况下CAShapeLayer的fillColor的透明度,也会对图层的显示起到影响作用,图层最终的显示只跟fillColor的透明度有关,跟fillColor的颜色无关。...,self.waveView为一个水波上涨的自定义试图,其中水波的上升效果是通过核心动画和 CAShapeLayer的path动态绘制实现的,先了解更多的可以看我的其他两篇文章: 绘图-视图遮罩MaskView...背景clear.gif 设置了self.waveSinLayer的背景和self.waveCosLayer的背景都为clearColor。 ?
文本或者背景色),管理子图层的位置,在数据结构上构成树的形式,称之为图层树;图层树的能力包括: 阴影、圆角、带颜色的边框 3D 变换 非矩形范围 透明遮罩 多级非线性动画 在 CALayer 的工作过程中...[4] 4.5.2 呈现树与模型树 呈现树是图层树中所有图层的呈现图层所形成,模型树是所有图层的模型图层所形成。 呈现图层仅在图层首次被提交的时候创建。...这意味着 CALayer 除了 “真实” 值(视图描述中设置的值)之外,必须要知道当前显示在屏幕上的属性值,而每个图层属性的显示值都被存储在呈现图层中。...渲染过程会被细分为四个分离的阶段: 布局:准备视图 / 图层的层级关系,以及设置图层属性(位置、背景色、边框等)的阶段 显示:图层的寄宿图片被绘制的阶段 准备:CoreAnimation 准备发送动画数据到渲染服务...类型决定),新产生的节点会挂载到原先的父节点下。
当在操作 UI 时,比如改变了 Frame、更新了 UIView/CALayer 的层次时,或者手动调用了 UIView/CALayer 的 setNeedsLayout/setNeedsDisplay...方法后,这个 UIView/CALayer 就被标记为待处理,并被提交到一个全局的容器去。...当Oberver监听的事件到来时,回调执行函数中会遍历所有待处理的UIView/CAlayer 以执行实际的绘制和调整,并更新 UI 界面。...8 CALayer 的 border、圆角、阴影、遮罩(mask),CASharpLayer 的矢量图形显示,通常会触发离屏渲染(offscreen rendering),而离屏渲染通常发生在 GPU...避免使用圆角、阴影、遮罩等属性。
实现一个自定义弹窗视图 我们平时在开发的时候,经常会遇到这样的需求:在页面中弹出一个自定义视图,除了弹出的自定义视图之外,页面的其他位置都置灰态。比如下图这样: ?...要实现这样的效果,基本思路是: 1,新建一个弹窗背景视图,背景颜色设置为黑色,透明度设置为0.5; 2,将自定义弹窗视图加在弹窗背景视图上; 3,触发弹出弹窗视图的时候,将弹窗背景视图添加到程序的根窗口上...; 4,移除弹窗视图的时候,就将弹窗背景视图从父视图上移除即可。.../** 灰色背景上方的展示视图。...展示浮层上的自定义提示视图的时候,我使用了UIView的动画,可以在这里实现浮层上的自定义提示视图展示时候的动画。 给浮层的背景视图添加一个点击手势,以在点击的时候移除该浮层。
但是这时所有的View视图并不是可见的。...第4行设置当前UIButton登录按钮的位置,按钮的x坐标设置在整个界面之外,因此当前Button按钮是不可见的。第5行为登录按钮添加一个淡绿色背景。第6行设置登录按钮Title内容。...4 UIView视图中常见动画的属性分析 我们在第2节和第3节主要依靠UIView下的frame属性来实现登录按钮从左到右的进入效果。那么UIView下的其他属性是不是也可以有类似的效果呢?...每个UIView都有一个Layer图层,在这个图层中承载的是视图的内容,所以结合Layer可以实现很多高级的动画效果。当然除了这些之外,UIView还有很多其他属性,在后面的章节中会为大家一一呈现。...小结 通过对本文的学习,相信大家基本上掌握了动画分析的基本步骤,在这里总结一下动画实现的三个步骤: (1)设置视图的动画初始状态。 (2)添加视图的动画相应属性。 (3)设置视图的动画最终状态。
animated:(BOOL)animated; /** * 找到子视图中所有的HUD,并隐藏...* @return 子视图最顶层的HUD. */ + (MB_INSTANCETYPE)HUDForView:(UIView *)view; /** * 找到并返回子视图中所有的HUD....* @return 所有找到的HUD视图(存储 MBProgressHUD 对象的数组). */ + (NSArray *)allHUDsForView:(UIView *)view; /**...;这也是我最终决定选定 MBProgressHUD 并深入使用 MBProgressHUD的重要原因.初次之外, MBProgressHUD 还支持自定义部分进度条相关的属性.具体细节如下: @interface...assign) float margin; /** * HUD圆角半径,默认10.0. */ @property (assign) float cornerRadius; /** * 是否给父视图添加一个放射线样式的遮罩层
视图在层级关系中可以互相嵌套,一个视图可以管理它的所有子视图的位置。 在iOS中,所有的视图都是从UIView这个基类派生出来的。...1.3 平行的层级关系 每个UIView都对应着一个CALayer,视图的职责是创建并管理这个图层,以确保党子视图在层级关系中添加或者被移除的时候,他们对应的图层也同样的在对应的层级关系树中有相同的操作...但是有时候我们只使用UIView还是会有些捉襟见肘的,CALayer暴露了一些UIView没有提供的功能: 阴影、圆角、边框 3D变换 非矩形范围 透明遮罩 非线性动画 ---- 2.寄宿图 2.1...2.1.3 contentsScale contentsScale属性定义了寄宿图的像素尺寸和视图大小的比例,默认情况下是一个1.0的浮点数。...2.1.4 maskToBounds 看上面最新的运行图,发现图片超出了视图的边界。因为默认情况下,UIView仍会绘制超过边界的内容,在CALayer也不例外。
---- 在UIView中有一个maskView属性,我们可以利用这个属性很方便的做出一些有意思的效果 这个属性在iOS8之后开始使用,用来表示视图的遮罩。 ?...就是不起作用,请设置一下 maskView的背景颜色。...我gitHub上上传的dome效果图如下,做一下思路说明,供有需要的兄弟参考一下: ?...,layer的mask是种位掩蔽,在shapeLayer的填充区域中,alpha值不为零的部分,self会被绘制;alpha值为零的部分,self不会被绘制 可以把任何UIView切成任意形状的代码:...,顾名思义, } 视图初始化的时候调用即可 - (id)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame
导航栏是半透明的,可能具有背景色调,并且可以配置为在屏幕上键入屏幕时隐藏,发生手势或视图调整大小。 ? 考虑在显示全屏内容时暂时隐藏导航栏。当您想关注内容时,导航栏可能会分散注意力。...在大多数情况下,标题可帮助人们了解他们正在查看的内容。但是,如果导航栏标题似乎是多余的,可以将标题留空。例如,Notes不会为当前注释标题,因为第一行内容提供了所需的所有上下文。 ?...导航栏控件 避免拥挤导管栏的控制太多。通常,导航栏不应包含视图的当前标题,后退按钮和管理视图内容的一个控件。如果您在导航栏中使用分段控件,则该栏不应包含标题或除分段控件之外的任何控件。...如果用自定义图像替换系统提供的返回按钮人字纹,也可以提供自定义遮罩图像。iOS在使用此遮罩时,可以在转换期间为按钮标题设置动画。 不要包含多段面包屑路径。...如果您认为在没有当前屏幕的完整路径的情况下,人们可能会迷失方向,请考虑对应用程序的层次结构进行展平。 给文本标题按钮足够的空间。
在 UIKit 中,每个视图都来自一个名为UIView的类,该类具有许多属性和方法:背景色,确定其放置方式的约束,用于将其内容呈现到其中的图层等等。...在 UIKit 中,UIStackView 是一种非渲染视图类型,旨在简化布局,但这意味着即使它因为继承的原因具有背景色,也从未真正使用过。...在 SwiftUI 中,我们所有的视图都是简单的结构体,几乎可以自由创建。想想看:如果您制作一个仅包含一个整数的结构体,则结构体的整个大小就是:一个整数。没有其他的。...实际上,您不能找到比使用 Color.red 作为视图的更好的主意:除了“用红色填充我的空间”之外,它不包含任何信息。...相比之下,Apple 的UIView文档[1]列出了 UIView 拥有的约200种属性和方法,无论是否需要它们,所有这些属性和方法都将传递给其子类。
在UIKit中,每个视图都来自一个名为UIView的类,该类具有许多属性和方法:背景色,确定其放置方式的约束,用于将其内容呈现到其中的图层等等。...在UIKit中,UIStackView是一种非渲染视图类型,旨在简化布局,但这意味着即使它因为继承的原因具有背景色,也从未真正使用过。...在SwiftUI中,我们所有的视图都是简单的结构体,几乎可以自由创建。想想看:如果您制作一个仅包含一个整数的结构体,则结构体的整个大小就是:一个整数。没有其他的。...实际上,您不能找到比使用Color.red作为视图的更好的主意:除了“用红色填充我的空间”之外,它不包含任何信息。...相比之下,Apple的UIView文档列出了UIView拥有的约200种属性和方法,无论是否需要它们,所有这些属性和方法都将传递给其子类。
对此你在应用中,应该尽量减少不必要的属性修改。 当视图层次调整时,UIView、CALayer 之间会出现很多方法调用与通知,所以在优化性能时,应该尽量避免调整视图层次、添加和移除视图。...不论通过何种技术对视图进行布局,其最终都会落到对 UIView.frame/bounds/center 等属性的调整上。...Autolayout Autolayout 是苹果本身提倡的技术,在大部分情况下也能很好的提升开发效率,但是 Autolayout 对于复杂视图来说常常会产生严重的性能问题。...对于只需要圆角的某些场合,也可以用一张已经绘制好的圆角图片覆盖到原本视图上面来模拟相同的视觉效果。最彻底的解决办法,就是把需要显示的图形在后台线程绘制为图片,避免使用圆角、阴影、遮罩等属性。...除此之外,我还把图片解码等操作通过 YYDispatchQueuePool 进行管理,控制了 App 总线程数量。
iOS开发CoreAnimation解读之二——对CALayer的分析 一、UIView中的CALayer属性 1.Layer专门负责view的视图渲染 每一个UIView的对象中都有一个...layer这样的属性,并且layer会负责view中有关图形绘制的相关操作,例如我们设置view的背景颜色和设置layer的背景颜色都是有效的,并且,设置view的背景色依然是通过layer来展示的,我们可以写如下的测试代码...2.自定义view默认layer属性的类 UIView是很多视图类的父类,根据功能不同,会分出UIImageView,UIScrollerView,UITableView等,CALayer...,layer层的背景色就是红色的了。...8.CATiledLayer CATiledLayer类似瓦片视图,可以将绘制分区域进行,常用于一张大的图片的分不分绘制。
5UIView开发技巧 5.1常用技巧 5.1.1使用半透明View与不透明SubView 半透明背景视图只能用此种方法设置颜色,否则subView也是半透明的。...:返回nil; •若返回YES,则向当前视图的所有子视图(subviews)发送hitTest:withEvent:消息,所有子视图的遍历顺序是从top到bottom,即从subviews数组的末尾向前遍历...,直到有子视图返回非空对象或者全部子视图遍历完毕; •若第一次有子视图返回非空对象,则hitTest:withEvent:方法返回此对象,处理结束; •如所有子视图都返回非,则hitTest:withEvent...如果一个子视图的区域超过父视图的bound区域(父视图的clipsToBounds属性为NO,这样超过父视图bound区域的子视图内容也会显示),那么正常情况下对子视图在父视图之外区域的触摸操作不会被识别...对于每个触摸操作都会有一个UITouch对象,UITouch对象用来表示一个触摸操作,即一个手指在屏幕上按下、移动、离开的整个过程。
demo中就是用该方法实现的,有兴趣的可以下下来看一看 conrnerRadius只影响背景颜色不影响背景图和子图层,所以往往我们在设置圆角时还会开启view的masksToBounds(剪裁属性),...当设置成YES时,图层里面所有东西都会被截取 边框 边框需要设置layer的两个属性,borderWidth和borderColor,并且边框是沿着图层bounds绘制,同时包含图层的角 borderWidth...3)shadowOffset 阴影的方向和距离,默认是(0, -3),即阴影相对于Y轴有3个点的向上位移 4)shadowRadius 阴影的模糊度,当它的值是0的时候,阴影就和视图一样有一个非常确定的边界线...,当值越来越大的时候,边界线看上去就会越来越模糊和自然 5)shadowPath 可以通过这个属性单独于图层形状之外指定阴影的形状 阴影是绘制在layer的边界之外的,所以当我们设置masksToBounds...阴影是通过里面的飞机来计算 所以,我们圆角加阴影的实现方案就出来了,我们可以用两个视图来实现,一个只画阴影的空的外图层,和一个经过裁剪的内图层,这样外图层的阴影会根据裁剪过后的内图层来计算,这样看起来就即有阴影又有圆角了
NSDictionary *)launchOptions方法内加入代码: [[UIApplication sharedApplication] setStatusBarHidden:NO]; 【注意】 如果你的程序同时使用了导航栏作为根视图控制器...新建一个类,继承UIView,假设名为Guide。...{ [super viewDidLoad]; [self setupScrollView]; [self setupPageControl]; } //创建程序第一次加载要显示的视图...但是这个窗口默认的背景色是磨砂不透明的,因此还需要把它的背景色设为透明。这样看起来就像是全屏遮罩一样,但是由于系统不认为新的View是全屏的,所以上一个View也不会被unload。...}]; 代码比较简单,需要注意的是,设置背景色透明的那行代码,需要写在completion block里,而且设置的不是controller.view.backgroundColor,而是controller.view.superview.backgroundColor
在iOS开发及测试中,除了业务逻辑和算法之外,UI控件是最重要的一部分,因此熟悉UI控件及实现原理,对于了解开发实现和测试是相当必要的,这篇文章将给大家介绍常用的UI控件及实现。...iOS中用UIView来表示视图,App中能看到的元素,都是UIView及其子类,通俗的说各种UI控件都属于view,不同的控件代表不同种类的view。iOS中所有能看到的内容都是view或其子类。...创建view的步骤如下: ①开辟空间并初始化视图(初始化时,给出视图位置和大小) ②对视图做一些设置(比如:背景颜色) ③将视图添加到window上进行显示 ④释放视图对象 视图创建代码: UIView...UIView的操作方法 1)添加视图 UIView的addSubview:方法可以添加子视图,对于同一个视图的所有子视图来讲,后添加的子视图会把已加的子视图盖在下面。...注:UIButton : UIControl : UIView(详见下表) ? 5)外观控制: UIButton提供了外观控制的API。包括标题、背景图⽚片、前景图⽚片等(详见下表) ?
领取专属 10元无门槛券
手把手带您无忧上云