有没有办法更改UIVisualEffectView的效果? 在我的应用程序中,我在Storyboard中创建了一个UIVisualEffectView,然后我希望根据用户设置将其更改为浅色或深色...
我只看到一个“initWithEffect”和一个“effect”属性是只读的:(
所以,如何解决这个问题呢?
谢谢, Urkman
有没有办法更改UIVisualEffectView的效果? 在我的应用程序中,我在Storyboard中创建了一个UIVisualEffectView,然后我希望根据用户设置将其更改为浅色或深色...
我只看到一个“initWithEffect”和一个“effect”属性是只读的:(
所以,如何解决这个问题呢?
谢谢, Urkman
实际上现在有可能做到这一点!
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)
})
很遗憾,一旦视图创建后就不能更改其效果。
因此,如果您将UIVisualEffectsView用作视图层次结构的容器,则需要使用另一种效果创建新的效果视图,并将层次结构移动到新容器中。
如果您只是想模糊其后面的所有视图而使用UIVisualEffectsView,则可以例如在storyboard中创建两个模糊视图,将其中一个设置为隐藏,并根据用户设置更改它们的隐藏状态。