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如何使透明视图的子视图不透明?的主要内容,如果未能解决你的问题,请参考以下文章
iOS UITableViewCell点击时子视图背景透明的解决方法