【问题标题】:UIView alpha vs. UIColor alphaUIView alpha 与 UIColor alpha
【发布时间】:2013-12-23 18:34:57
【问题描述】:

我想知道两者的区别:

  • 用 为我的 UIView 分配颜色
  • 为它分配一个不透明的颜色,但给 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];

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

【问题讨论】:

  • 据我了解,唯一的区别是您已经注意到,视图上的setAlpha: 会影响它的子视图(不是超级视图),而UIColor 上的alpha 只会影响背景颜色本身。

标签: ios objective-c uiview transparency alpha


【解决方案1】:

区别在于:

  • 通过将背景颜色设置为 alpha
  • 通过设置视图的 alpha,整个视图(包括所有子视图)将使用给定的 alpha 进行绘制

所以在你的例子中:

  • _view1 (alpha
  • _view2(背景颜色上的 alpha
  • _view3(两者都默认为 alpha 1):好吧,我们都看到了 :-) 背景颜色和标签都是不透明的

两者的用法示例:

左图:您有一个半透明的黑色叠加层,其中有一个包含白色复选标记图标的子视图 UIImageView,您通常希望该图标完全不透明(不透明)。因此,您只需将背景颜色设置为黑色,alpha

反对:

右图:您有一个半透明的黑色叠加层,其中有一个子视图 UIImageView,其中包含一个白色图案图像(图案是不透明的白色,没有 alpha)。并且您希望叠加层中的图案也是半透明的。然后,您将背景颜色设置为黑色,alpha 1(不透明)和整个视图的 alpha

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

【讨论】:

  • 我想要这样的效果,比如复选框(不透明)。我不想在视图中显示背景(黑色 alpha .5f)请告诉我
  • 回答您的问题 007:只需将背景颜色设置为黑色并将 alpha 设置为 1。您应该会看到一个带有复选标记的纯黑框。
猜你喜欢
  • 2015-09-04
  • 2018-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-30
  • 2011-03-19
  • 2012-04-09
相关资源
最近更新 更多