当父视图将alpha设置为半透明时,如何强制视图中的元素不透明

时间:2012-07-11 14:05:44

标签: ios ios5 interface-builder

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

任何指针?

谢谢!

1 个答案:

答案 0 :(得分:1)

superview的子视图总是最小的,与子视图一样透明。

子视图alpha = 0.5且superview alpha = 0.1将导致子视图的alpha为0.05。

实现这一目标的唯一方法是更改​​视图层次结构。您的子视图不得再是子视图。它可能仍处于相同的位置。 (可能需要不同的头寸价值)。

一个例子。 您的背景视图是backgroundView 你的superview是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位于下一位。否则,当其alpa大于0时,firstView可以隐藏overlayView。