更改对UIVisualEffectView的影响

时间:2015-01-22 16:19:53

标签: ios objective-c

有没有办法改变对UIVisualEffectView的影响? 在我的应用程序中,我在Storyboards中创建了一个UIVisualEffectView,然后我想在用户设置上将其更改为Light或Dark ...

我只看到“initWithEffect”,而“effect”属性只读:(

那么,关于如何解决这个问题的任何想法?

谢谢, Urkman

2 个答案:

答案 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来模糊其背后的所有视图,您可以在故事板中创建两个模糊视图,将其中一个设置为隐藏,并根据用户设置更改其隐藏状态。