2

我有一个稍微半透明的视图,我将 alpha 设置为大约 0.75,它包含一个按钮作为子元素。我希望按钮完全不透明,我在 IB 中设置了 opaque 属性,但按钮仍然显示为半透明。

任何指针?

谢谢!

4

1 回答 1

1

超级视图的子视图总是与其子视图一样透明。

子视图 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。

于 2012-07-11T14:19:59.990 回答