我在视图的右上角有一个菜单按钮(+),当按下按钮时,下拉几个其他按钮供用户选择。
我想有效地将所有这些按钮下面的所有视图调暗。
我目前正在这样做的方法是在所有内容之上设置透明视图,并在单击按钮后更改背景颜色及其透明度。
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