UIVisualEffectView的变化效果

7

有没有办法更改UIVisualEffectView的效果? 在我的应用程序中,我在Storyboard中创建了一个UIVisualEffectView,然后我希望根据用户设置将其更改为浅色或深色...

我只看到一个“initWithEffect”和一个“effect”属性是只读的:(

所以,如何解决这个问题呢?

谢谢, Urkman

2个回答

13

实际上现在有可能做到这一点!

myVisualEffectView.effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];

你可以给这个添加动画效果!

[UIView animateWithDuration:1.0 animations:^{
    myVisualEffectView.effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleExtraLight];
}];

你甚至可以使模糊效果动起来并添加或移除 - 就像在Springboard上的Spotlight搜索时一样!只需将样式设置为nil,就可以逐步去除模糊效果。

Swift 4版本:

myVisualEffectView.effect = UIBlurEffect(style: .dark) 

UIView.animate(withDuration: 1, animations: {
    myVisualEffectView.effect = UIBlurEffect(style: .extraLight)
})

1

很遗憾,一旦视图创建后就不能更改其效果。

因此,如果您将UIVisualEffectsView用作视图层次结构的容器,则需要使用另一种效果创建新的效果视图,并将层次结构移动到新容器中。

如果您只是想模糊其后面的所有视图而使用UIVisualEffectsView,则可以例如在storyboard中创建两个模糊视图,将其中一个设置为隐藏,并根据用户设置更改它们的隐藏状态。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接