Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIVisualEffectView的渐变遮罩_Ios_Swift_Gradient_Blur_Uivisualeffectview - Fatal编程技术网

Ios UIVisualEffectView的渐变遮罩

Ios UIVisualEffectView的渐变遮罩,ios,swift,gradient,blur,uivisualeffectview,Ios,Swift,Gradient,Blur,Uivisualeffectview,我知道UIVisualEffectView非常不可量化,因此我无法设置视图的模糊半径,甚至无法设置颜色 现在我意识到我甚至不能掩盖一个 我想实现一个背景模糊的标签栏,但在上角它会变得更清晰,直到100%。 因为我知道我无法调整模糊半径,所以我有了一个想法,使用渐变遮罩来拱起这样的东西: 但是,一开始我很伤心,我甚至无法掩盖一个简单的矩形: let gradientMask = CAGradientLayer() gradientMask.frame = effectView.frame

我知道
UIVisualEffectView
非常不可量化,因此我无法设置视图的模糊半径,甚至无法设置颜色

现在我意识到我甚至不能掩盖一个

我想实现一个背景模糊的标签栏,但在上角它会变得更清晰,直到100%。 因为我知道我无法调整模糊半径,所以我有了一个想法,使用渐变遮罩来拱起这样的东西:

但是,一开始我很伤心,我甚至无法掩盖一个简单的矩形:

let gradientMask = CAGradientLayer()
    gradientMask.frame = effectView.frame

    gradientMask.colors = [UIColor.black.cgColor, UIColor.clear.cgColor]

    effectView.layer.mask = gradientMask
结果是,
UIVisualEffectView
不再显示。 你有什么解决办法吗


编辑:屏幕截图中的视图就是一个例子,在最终的应用程序中,背景是一个动态列表,带有平铺,我可以在其中滚动浏览。因此,快照的解决方法在我的情况下不起作用。

我想这可以通过使用
UIVisualEffectView
效果制作背景
UIView
的运行时快照,并使用生成的快照图像在覆盖
UIImageView
中显示,然后将遮罩应用于该效果
UIImageView
同时隐藏
UIVisualEffectView
。不漂亮,但可以工作。编辑:除此之外,可能是相关的。好主意,但在我的情况下不起作用。我忘了说,我的背景是动态的。在最终视图中,我将有一个列表,可以在其中滚动。尝试使用渐变层,而不是形状层。查看或尝试此回购-@Kirow尝试了这两种方法,两种方法都有相同的结果。模糊的视图不再显示。已使用blurView.mask=。。。和blurView.layer.mask=。。。对于遮罩,我使用了一个简单的矩形层,一个CAGradientLayer和一个UIView。我想这可以通过使用
UIVisualEffectView
效果制作背景
UIView
的运行时快照,并使用生成的快照图像显示在叠加
UIImageView
中,并对该
UIImageView
应用掩码,同时隐藏
UIVisualEffectView
。不漂亮,但可以工作。编辑:除此之外,可能是相关的。好主意,但在我的情况下不起作用。我忘了说,我的背景是动态的。在最终视图中,我将有一个列表,可以在其中滚动。尝试使用渐变层,而不是形状层。查看或尝试此回购-@Kirow尝试了这两种方法,两种方法都有相同的结果。模糊的视图不再显示。已使用blurView.mask=。。。和blurView.layer.mask=。。。对于遮罩,我使用了一个简单的Rect层、一个CAGradientLayer和一个UIView。