我在视图的右上角有一个菜单按钮(+),当按下按钮时,其他几个按钮下拉,供用户选择。
我想有效地将所有这些按钮下方的所有视图调暗。
我目前正在这样做的方法是在所有内容之上设置透明视图,并在单击按钮后更改背景颜色及其透明度。
if button.isHidden {
self.dimView!.backgroundColor = UIColor.black
self.dimView!.alpha = 0.7
} else {
self.dimView!.alpha = 0
}
这种方法能实现这种效率吗?从高效的角度来说它不会干扰触摸并且不会减慢手机的速度?
答案 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