在按钮

时间:2017-12-18 01:37:39

标签: ios swift uiview uibutton

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

您的调光视图 应禁用当Alpha高于0.5时所覆盖的视图上的点按。

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

答案 1 :(得分:0)

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

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

  

"不透明"属性为绘图系统提供了如何提示   应该对待视图。如果设置为true,则绘图系统会处理   视图为完全不透明,允许绘图系统优化一些   绘图操作和提高性能。如果设置为false,则   绘图系统通常与其他内容合成视图。该   此属性的默认值为true。

     

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

代码应该是这样的: -

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