我有一个稍微半透明的视图,我将 alpha 设置为大约 0.75,它包含一个按钮作为子元素。我希望按钮完全不透明,我在 IB 中设置了 opaque 属性,但按钮仍然显示为半透明。
任何指针?
谢谢!
我有一个稍微半透明的视图,我将 alpha 设置为大约 0.75,它包含一个按钮作为子元素。我希望按钮完全不透明,我在 IB 中设置了 opaque 属性,但按钮仍然显示为半透明。
任何指针?
谢谢!
超级视图的子视图总是与其子视图一样透明。
子视图 alpha = 0.5 和父视图 alpha = 0.1 将导致子视图的 alpha 为 0.05。
实现这一点的唯一方法是更改视图层次结构。您的子视图不能再是子视图。它可能仍然在同一个位置。(可能需要不同的位置值)。
一个例子。你的背景视图是 backgroundView 你的父视图是 firstView 你的子视图是 overlayView
您当前的层次结构是
backgroundView -> firstView -> overlayView
您应该将其更改为:
backgroundView -> first View
\-> overlay View.
如果您的 firstView 的位置是 (10, 10) 并且您的 overlayView 的位置是 (20,20),那么将您的 overlayView 的位置更改为 (30,30),因为它现在位于背景视图的坐标系内。
对于您的代码:在某些时候您曾经拥有
[backgroundView addSubView:firstView];
[fisrtView addSubView:overlayView];
将其更改为
[backgroundView addSubView:firstView];
[backgroundView addSubView:overlayView];
如果您没有编写代码而是在 IB 中定义了它,那么只需在视图树中相应地移动 overlayView,使其与 firstView 处于同一级别。
不管你是写代码还是在 IB 中绘制,请确保 firstView 在前,overlayView 在后。否则 firstView 可以在其 alpa 大于 0 时隐藏 overlayView。