【问题标题】:Different alpha for subviews in the same container同一容器中子视图的不同 alpha
【发布时间】:2009-11-10 16:39:49
【问题描述】:

我有一个类似Can you override a parent UIView's alpha value on one of its subviews?的问题

在某些情况下,我想在当前视图上显示自定义的半透明全屏覆盖视图。诀窍是我希望它在顶部有自定义导航栏和一些其他内容(让它成为标签),我希望导航栏是不透明的,即在原始视图上绘制所有内容。同时,我希望所有其他内容都是半透明的。我不想干扰主视图的导航栏,因为可能根本没有导航栏。我想创建一个带有导航栏和所有其他内容的容器视图,并将其添加到窗口中。但是我能想到的容器、导航栏和内容的背景颜色和 alpha 组合似乎都不起作用。

我发现的问题表明,如果容器视图不透明,这是不可能的。我的情况可能略有不同,因为透明和不透明部分之间有一条简单的边界线。所以我仍然希望有一些简单的方法。还是我必须分别管理不透明的导航栏和透明的内容视图?

【问题讨论】:

  • 发布您想要查看的模型图像甚至是视图层次结构的文本描述可能会有所帮助。

标签: iphone cocoa-touch uiview alphablending


【解决方案1】:

如果我正确理解您的问题,您应该让您的容器视图完全透明(backgroundColor = [UIColor clearColor]),并将不透明的导航栏和半透明的内容视图添加到容器视图中。

【讨论】:

  • 谢谢,这似乎正是我所需要的。我尝试在 Interface Builder 中设置颜色和 alpha,但仍然看不到 clearColor。如果我在 viewDidLoad 中以编程方式设置它,它会完美运行。再次感谢您。
  • 更新:在相当长一段时间内,您也可以在 Interface Builder 中设置“清除颜色”。
【解决方案2】:

编辑:忽略这个答案。我误解了这个问题。

上一篇文章的答案不正确(正如我理解的问题。)每个单独视图的 alpha 都是独立设置的。您需要在添加每个视图时、在 Interface Builder 中或在从 nib 加载之后将 alpha 调整到所需的级别。

如果您不想覆盖导航栏,您可以 (1) 将覆盖视图的框架定位在导航栏下方或 (2) 在覆盖视图中创建两个同级视图,其中一个视图在导航上是透明的酒吧和其他有你的半透明元素。

【讨论】:

  • 正如我对您的其他答案的评论,上一篇文章的答案是正确的。即使每个子视图的 alpha 可以独立于主视图设置,它们也会按照它们在视图层次结构中的位置顺序进行组合。子视图的 alpha 乘以主视图。
猜你喜欢
  • 2015-12-11
  • 2017-02-27
  • 2016-09-14
  • 1970-01-01
  • 2012-03-24
  • 2018-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多