UIView阿尔法与UIColor阿尔法
我想知道之间的区别:
- 指定我的UIView一个颜色与<1阿尔法与
- 给它分配一个不透明的颜色,但给UIView一个<1的alpha值。
在截图中,我做了两个UIView,每个顶部有两个黑色的(alpha = 1.0)UILabels:
假设之前定义了一个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):好吧,我们都看到:-)背景颜色和标签都是不透明的
两者的示例用法:
左图 :你有一个半透明的黑色覆盖,其中有一个子视图UIImageView
包含一个白色复选标记图标,你通常希望该图标是完全不透明(不透明)。 所以你设置背景颜色黑色与alpha <1(0.75f在这个例子中)。
在反对:
正确的图像 :你有半透明的黑色覆盖,其中有一个子视图UIImageView
包含白色图案图像(模式是不透明的白色,没有alpha)。 而你希望覆盖图案也是半透明的。 然后,您将背景颜色设置为黑色与alpha 1(不透明)和alpha <1的整个视图。
正如你所看到的,左侧图像上的图标是完全不透明的,但是在右侧,也可以通过星形图案来看到。