有没有办法改变对UIVisualEffectView的影响? 在我的应用程序中,我在Storyboards中创建了一个UIVisualEffectView,然后我想在用户设置上将其更改为Light或Dark ...
我只看到“initWithEffect”,而“effect”属性只读:(
那么,关于如何解决这个问题的任何想法?
谢谢, Urkman
答案 0 :(得分:9)
实际上现在有可能做到这一点!
myVisualEffectView.effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
你可以动画这个!
[UIView animateWithDuration:1.0 animations:^{
myVisualEffectView.effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleExtraLight];
}];
你甚至可以添加和删除模糊动画 - 几乎就像在Springboard上的Spotlight reaveal一样!只需将样式设置为nil即可逐步删除模糊效果。
Swift 4版本:
myVisualEffectView.effect = UIBlurEffect(style: .dark)
UIView.animate(withDuration: 1, animations: {
myVisualEffectView.effect = UIBlurEffect(style: .extraLight)
})
答案 1 :(得分:0)
不幸的是,您无法在创建后更改视图效果。
因此,如果您使用UIVisualEffectsView作为视图层次结构的容器,则需要将效果视图替换为使用其他效果创建的新视图,并将层次结构移动到新容器。
如果您正在使用UIVisualEffectsView来模糊其背后的所有视图,您可以在故事板中创建两个模糊视图,将其中一个设置为隐藏,并根据用户设置更改其隐藏状态。