在按钮的背景中调暗所有视图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在按钮的背景中调暗所有视图相关的知识,希望对你有一定的参考价值。

我在视图的右上角有一个菜单按钮(+),当按下按钮时,下拉几个其他按钮供用户选择。

我想有效地将​​所有这些按钮下面的所有视图调暗。

我目前正在这样做的方法是在所有内容之上设置透明视图,并在单击按钮后更改背景颜色及其透明度。

if button.isHidden {
    self.dimView!.backgroundColor = UIColor.black
    self.dimView!.alpha = 0.7
} else {
    self.dimView!.alpha = 0
}

这种实现这种效率的方法是什么?从高效的角度来说它不会干扰触摸并且不会减慢手机的速度?

答案

当alpha高于0.5时,您的调光视图应禁用其覆盖的视图上的点击。

如果将alpha设置为0,则应该设置view.hidden=true。这样,渲染系统不会尝试将其与屏幕上的其他视图合成。 (在将alpha设置为0.7之前设置hidden=false,然后将hidden=true设置为/而不是将alpha设置为0.除非您使用hidden = true设置alpha变化动画,否则alpha值无关紧要。)

另一答案

那么透明视图应该在ViewController的所有子视图的背景中,以实现所需的结果。

关于高效和优化的方式,那么最好设置视图的opaque属性,这里是描述: -

“不透明”属性为绘图系统提供了如何处理视图的提示。如果设置为true,则绘图系统将视图视为完全不透明,这允许绘图系统优化某些绘图操作并提高性能。如果设置为false,则绘图系统会正常地将视图与其他内容合成。此属性的默认值为true。

预计不透明视图将使用完全不透明的内容填充其边界 - 也就是说,内容的alpha值应为1.0。如果视图不透明并且未填充其边界或包含完全或部分透明的内容,则结果是不可预测的。如果视图完全透明或部分透明,则应始终将此属性的值设置为false。

代码应该是这样的: -

view.backgroundColor = UIColor.black.withAlphaComponent(0.75)
view.isOpaque = false

以上是关于在按钮的背景中调暗所有视图的主要内容,如果未能解决你的问题,请参考以下文章

选择时在自定义 UITableViewCell 中调暗 UIImageView

如何在 VBA 中调暗和设置变量工作簿名称?

从单个按钮从多个片段中提取数据

使用 Kotlin 更改片段中的按钮背景

iOS 8 和 AVFoundation:如何调暗背景音频?

片段中的按钮自定义视图