我有一个alpha为0.5的UIView,我将其作为子视图添加到我的主视图中,以便灰显其他所有内容。我想在这个灰色的UIView中添加一个额外的UIView作为子视图 - 问题是当我这样做时,我新添加的子视图也是部分透明的。
有没有办法让子视图“忽略”其超级视图的alpha值并且本身完全不透明?
答案 0 :(得分:110)
直接设置UIView背景颜色alpha而不是alpha。
<强>目标C 强>
UIView *view;
...
view.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:.6];
它与:
不一样view.backgroundColor = [UIColor blackColor];
view.alpha = .6;
<强>夫特强>
view.backgroundColor = UIColor.black.withAlphaComponent(0.6)
答案 1 :(得分:12)
不,不是真的。你想要的是采取叠加视图,并使其具有清晰的背景颜色。作为新叠加层的子视图,您的视图会使您的视图变得灰暗。而作为兄弟姐妹的观点,你的观点就是不透明的。
[OpaqueView] [DimmingView]
| |
[OverlayView]
答案 2 :(得分:2)
请勿将其放在半透明视图中。使它成为半透明视图的兄弟,并使用z-ordering将其放在上面。
答案 3 :(得分:2)
只有在背景上有任何图片时才会有效。
不是缩小alpha
的{{1}},而是在该视图上添加UIView
,然后减少UIImageView
的alpha。
现在在UIImageView
上添加您的子视图。
您的子视图将不再使用alpha属性.. :))
答案 4 :(得分:1)
不,任何视图都会继承其父级的不透明度。