我想知道之间的区别:
在屏幕截图中,我制作了两个UIViews,每个UIVabel上有两个黑色(alpha = 1.0)UILabel:
假设之前定义了一个宏_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颜色,也会影响子视图。但除此之外,我应该考虑的功能有什么不同吗? (例如,关于动画,图层等)
答案 0 :(得分:22)
区别在于:
所以在你的例子中:
_view1
(视图中的alpha <1):alpha也应用于子视图UILabel _view2
(背景颜色的alpha <1):subview UILabel非常不透明_view3
(两者都是defualt alpha 1):好吧,我们都看到:-)背景颜色和标签都是不透明的两者的示例用法:
左图:您有一个半透明的黑色叠加层,其子视图UIImageView
包含一个白色的复选标记图标,您通常希望该图标完全不透明(不透明) 。因此,您只需将背景颜色设置为黑色,其中alpha&lt; 1(示例中为0.75f)。
反对:
右图:您有一个半透明的黑色叠加层,其子视图UIImageView
包含白色图案图像(图案为不透明的白色,没有alpha)。并且您希望叠加中的图案也是半透明的。然后,您将背景颜色设置为黑色,其中alpha 1(不透明)和alpha&lt; 1到整个视图。
如您所见,左侧图像上的图标完全不透明,但在右侧,您还可以看到星星图案。