swift - 如何模糊UIPickerView的背景?

7 浏览
0 Comments

swift - 如何模糊UIPickerView的背景?

当点击UITableViewCell时,我会显示一个UIPickerView。我试图在pickerView上添加一个UIVisualEffectView,以给它一个模糊的背景。我想要的效果是这样的:

https://www.evernote.com/shard/s111/sh/645d307f-c597-4dfa-890f-9404ed297e71/fd738fdf15cd956fcfa917e4311bfd1b

但事实上我得到的是这样的:

https://www.evernote.com/shard/s111/sh/27440e85-2181-49e1-89e0-4b57e0ce3783/e6e2abae0edfb705e915b03e1b37e008

以下是我用于创建模糊效果并将其附加到picker的代码:

UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];

UIVisualEffectView *blurEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];

[blurEffectView setFrame:_myPicker.frame];

[_myPicker addSubview:blurEffectView];

[_myPicker sendSubviewToBack:blurEffectView];

请注意,即使调用了sendSubviewToBack,这仍然会将模糊效果放在选项轮盘的前面。当我滚动视图时,如果仔细观察,可以看到选项在模糊效果的后面移动。

如何将模糊效果正确地放置在背景,并将选项轮盘置于上方?

0
0 Comments

问题的原因是,由于不知道UIPickerView的确切视图层次结构,作者建议将pickerView的背景色设置为clearColor,并将picker view作为blurEffectView的子视图。

解决方法是,将pickerView的背景色设置为clearColor,并将picker view作为blurEffectView的子视图。

具体代码如下:

pickerView.backgroundColor = UIColor.clearColor()

blurEffectView.addSubview(pickerView)

0