alpha opaque hidden

alpha

iOS屏幕都是由一个个像素点组成,每一个像素点都可以由RGBA颜色空间组成一种颜色。
alpha属性决定视图通过像素显示多少信息。

  • 1.0 整个视图都会在像素上显示出来。
  • 0.0 整个视图没有在像素上显示出来,但它事实上整个视图还是存在界面上的

一般用于动画中,改变视图alpha值,视图便会若隐若现…

alpha取值范围 [0.0, 1.0]

opaque

这个跟alpha看似相似,却又不一样,BOOL值,UIView默认值是YES,但是UIButton等子类默认值都是NO,设置为NO,opaque表示当前UIView是否 不透明。但决定不了当前UIView是不是透明。

如果多个图层有层叠部分,设置为YES,GPU就会计算合成后的颜色。设置为NO,是忽略覆盖在下面的视图。这样子可以改善性能。

开发中我们应该尽量让其为NO。 特别是继承UIView时候,尽可能设置为NO。

hidden

hidden 视图根本不会绘制,也就是界面上不会存在该视图。他当然也就不会接收触摸事件了。

  • 当前视图以及子视图都不会绘制
  • 不也会响应事件,即使加了手势。

alpha与hidden的区别

虽然等同于alpha为0.0的时候,但是alpha为0.0的时候界面上实际上还是有该视图的。所以以alpha来做隐藏视图的动画。而hidden根本就不存在所以也就不存在动画了。

alpha即使设置为0.0,依旧会在界面上存在, 而hidden界面上根本就没有。

如何创建一个透明背景视图

当为0.0的时候不会响应事件。也就是说不会接收触摸事件以及手势。所以不能使用一个非常低的alpha值来创建“透明覆盖层”,捕获触摸事件。
可以使用alpha为1.0 opaque 为NO,backgroundColor为nil或者[UIColor clearColor]来捕获触摸事件。

坚持原创技术分享,您的支持将鼓励我继续创作!