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

问题描述 投票:0回答:2

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

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

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

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

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

ios swift uiview uibutton
2个回答
1
投票

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

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


0
投票

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

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

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

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

代码应该是这样的: -

view.backgroundColor = UIColor.black.withAlphaComponent(0.75)
view.isOpaque = false
© www.soinside.com 2019 - 2024. All rights reserved.