我想知道它们之间的区别:
- 给我的 UIView 分配一个颜色 <1 alpha vs
- 为它指定一个不透明的颜色,但给 UIView 一个 <1 的 alpha 值。
在屏幕截图上,我制作了两个 UIView,每个 UIView 的顶部都有两个黑色 (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];
我在视觉上只能看到一个区别:更改 View 自己的 alpha 而不是背景颜色的 alpha,也会影响 subview 。但除此之外,我应该考虑的功能有什么不同吗? (例如,关于动画、图层等)
最佳答案
区别在于:
- 通过设置背景颜色为 alpha <1,只有背景颜色有 alpha,所有 subview 默认有 alpha 1,即 100% 不透明
- 通过设置 View 的 alpha,整个 View (包括所有 subview )将使用给定的 alpha 绘制
所以在你的例子中:
_view1
(alpha <1 on view): alpha 也应用于 subview UILabel_view2
(alpha <1 on background color): subview UILabel 非常不透明_view3
(两者的默认 alpha 1):好吧,我们都看到了 :-) 背景颜色和标签都是不透明的
两者的用法示例:
左图:你有一个半透明的黑色叠加层,它有一个 subview UIImageView
包含一个白色的复选标记图标,你通常希望该图标完全不透明(非-透明的)。因此,您仅将背景颜色设置为黑色,alpha <1(示例中为 0.75f)。
反对:
右图:您有一个半透明的黑色覆盖层,它有一个包含白色图案图像的 subview UIImageView
(该图案是不透明的白色,没有 alpha)。并且您希望叠加层中的图案也是半透明的。然后,您可以将背景颜色设置为黑色,并为整个 View 设置 alpha 1(不透明)和 alpha <1。
如您所见,左图上的图标是完全不透明的,但在右图中,您还可以透过星星图案看到。
关于ios - UIView alpha 与 UIColor alpha,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20423390/