iOS如何使透明视图的子视图不透明?

Posted

技术标签:

【中文标题】iOS如何使透明视图的子视图不透明?【英文标题】:iOS how to make subview of a transparent view opaque? 【发布时间】:2014-09-28 02:53:34 【问题描述】:

我有一个视图作为另一个视图的子视图,然后我将父视图的 alpha 值设置为 0.5,但这也使子视图即使在其 alpha 值设置为 1 时也是透明的。那么我该如何制作当父视图的 alpha 值小于 1 时,子视图不透明(不透明)?

【问题讨论】:

我是新来的,如果有人能告诉我为什么我的问题被否决,我将不胜感激?然后我可以在以后的问题中避免这样的问题。 @JoeBlow 感谢您如此详细的回复! 不要忘记简单的解决方案是,不要让 B 成为该视图 A 的孩子。让 B 成为持有两者的“持有人”的孩子,但让 B 在上面。 【参考方案1】:

您最接近的是colorWithAlphaComponent:。使用类似下面的方法,你可以设置父视图背景的 alpha 分量,它不会影响子视图。

[yourSuperview setBackgroundColor:[[UIColor blackColor] colorWithAlphaComponent:0.5]];

【讨论】:

【参考方案2】:

如果您将父视图设置为 0.5,则所有子视图也将变为 0.5 或更低。你必须想出不同的设计方法。

【讨论】:

【参考方案3】:

对于 Swift 4.2

    self.yoursuperview.backgroundColor = UIColor.black.withAlphaComponent(0.5)

【讨论】:

【参考方案4】:

以下方法对我有用。

superView.backgroundColor = .clear

现在 superview 的 alpha 属性没有改变,它不会影响其子视图的 alpha。因此,子视图将是不透明的(如果您有背景颜色)。

【讨论】:

【参考方案5】:

父视图应该有两种设计。一种是“启用”设计,按原样显示,另一种是“禁用”设计,其中包含透明背景。

你不能用 alpha 做到这一点,因为子视图继承了 alpha。如果

parent.alpha = x

view.alpha = y,

那么视图的真正 alpha 将是:

x * y

【讨论】:

为什么这么复杂..??查看其他答案以获得更好的方法【参考方案6】:

我认为,您已经通过 Storyboard 创建了视图。我已经面临这个问题。找到下面的代码,这在我的情况下是正确的。

[MyParentView setBackgroundColor:[[UIColor blackColor] colorWithAlphaComponent:0.6]];

希望,这可能对你有所帮助。

【讨论】:

以上是关于iOS如何使透明视图的子视图不透明?的主要内容,如果未能解决你的问题,请参考以下文章

tableView 作为半透明视图中的子视图

如何在swift中使背景视图透明但图像不透明[关闭]

iOS UITableViewCell点击时子视图背景透明的解决方法

UIView z-index 透明度

SwiftUI:如何使列表视图透明?如何更改列表视图背景颜色?

iOS 7 - 透明的 UIView 阻塞手势识别器