UIView阿尔法与UIColor阿尔法

我想知道之间的区别:

  • 指定我的UIView一个颜色与<1阿尔法与
  • 给它分配一个不透明的颜色,但给UIView一个<1的alpha值。

在截图中,我做了两个UIView,每个顶部有两个黑色的(alpha = 1.0)UILabels:

两个UIView具有相同的颜色,但在UIView和bg上为0.5。颜色和第三个与阿尔法1

假设之前定义了一个macros_RGB:

#define _RGB(r,g,b,a) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a] 

然后这里是代码::

 [_view1 setBackgroundColor:_RGB(255, 0, 0, 1)]; [_view1 setAlpha:0.5]; [_view2 setBackgroundColor:_RGB(255, 0, 0, 0.5)]; [_view2 setAlpha:1]; [_view3 setBackgroundColor:_RGB(255, 0, 0, 1)]; [_view3 setAlpha:1]; 

我只能看到一个区别:更改视图自己的alpha而不是bg颜色,也会影响子视图。 但除此之外,我应该考虑的function有什么不同? (例如animation,图层等)

区别在于:

  • 通过设置背景颜色与阿尔法<1,只有背景颜色将有阿尔法和所有子视图默认会有阿尔法1,即将100%不透明
  • 通过对视图的设置,整个视图(包括所有的子视图)将用给定的alpha来绘制

所以在你的例子中:

  • _view1 (alpha <1 on view):alpha也应用于子视图UILabel
  • _view2 (alpha <1的背景颜色):subview UILabel是很好的不透明
  • _view3 (两者都_view3 alpha 1):好吧,我们都看到:-)背景颜色和标签都是不透明的

两者的示例用法:

背景clor上的阿尔法阿尔法在整个视图

左图 :你有一个半透明的黑色覆盖,其中有一个子视图UIImageView包含一个白色复选标记图标,你通常希望该图标是完全不透明(不透明)。 所以你设置背景颜色黑色与alpha <1(0.75f在这个例子中)。

在反对:

正确的图像 :你有半透明的黑色覆盖,其中有一个子视图UIImageView包含白色图案图像(模式是不透明的白色,没有alpha)。 而你希望覆盖图案也是半透明的。 然后,您将背景颜色设置为黑色与alpha 1(不透明)和alpha <1的整个视图。

正如你所看到的,左侧图像上的图标是完全不透明的,但是在右侧,也可以通过星形图案来看到。