2017-12-18 219 views
0

当按下按钮时,我在视图右上角有一个菜单按钮(+),其他几个按钮都会下拉以供用户选择。调暗按钮背景中的所有视图

我想将所有这些按钮的所有视图调暗效率。

我现在正在做的方式是通过在所有内容上放置一个透明视图并在单击该按钮后更改背景颜色以及其透明度。

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

这种方法能达到这种效率吗?有效的意义在于它不会干扰触摸并且不会减慢手机的速度?

+0

if this视图在背景中,那么它不会干扰下拉按钮的触摸。 –

+0

@ShamasS该视图位于后台的桌面视图和其他标签之上,即使它位于这些视图之上,但似乎不会影响触摸,但我不确定它是否会导致tableview滞后。 – gencode

回答

1

你的调图应该在它涵盖了意见禁用水龙头时,它的alpha为0.5以上。

如果将alpha设置为0,则应该设置为view.hidden=true。这样渲染系统不会试图将其与其他视图合成在屏幕上。 (在将alpha设置为0.7之前设置为hidden=false,并且除了将alpha设置为0之外,还可以设置hidden=true。除非将Alpha更改设为动画,否则alpha值无关。)

+0

感谢这就是我一直在寻找的东西,但只是要清楚,这是做到这一点的最佳方式吗? – gencode

+1

我不确定**最好的**方式,但这是我所做的,并且运作良好。 –

0

那么透明视图应该在你的ViewController的所有子视图的背景中,以达到预期的效果。

关于高效和优化的方式,那么这将是更好的设置来看不透明属性,这里是说明: -

“不透明”属性提供一个提示绘图系统如何它 应该对待视图。如果设置为true,则绘图系统将视图视为完全不透明,这允许绘图系统优化一些 绘图操作并提高性能。如果设置为false,则 绘图系统通常会将视图与其他内容进行合成。该属性的默认值为 。

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

的代码应该是这样的: -

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

对不起,我认为我的问题不是很清楚,我在所有标签和按钮的顶部添加了定期视图,但在我的(+)按钮下方添加了定期视图。当我点击这个按钮时,将我放在其他视图顶部的视图变为黑色,并使其变为透明。 – gencode