Xcode warning: "This will cause the effect to appear broken until opacity returns to 1"

aslisabanci picture aslisabanci · Oct 12, 2014 · Viewed 23.7k times · Source

I have a prototype cell and I put a UIVisualEffectView inside its ContentView. Visual Effect View's Blur Style is Dark and Vibrancy is off. Then I set the alpha of the Visual Effect View to 0,5 using the IB.

Then on runtime, I get a warning that says:

<UIVisualEffectView ...> is being asked to animate its opacity. This will cause the effect to appear broken until opacity returns to 1.

I couldn't understand why this warning is there and how I can set this alpha property properly.

Answer

zvonicek picture zvonicek · Dec 15, 2015

The question is what do you want to animate. If it's the effect, you cannot animate it via the alpha property. However, since iOS 9, you can animate it with setting the effect in animation block.

UIVisualEffectView* view = [[UIVisualEffectView alloc] initWithFrame:self.view.bounds];
view.effect = nil;
[UIView animateWithDuration:0.3 animations:^{
    view.effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
}];

Alternatively, you can animate the effect by animating the alpha of the wrapper view, as proposed in the other answers (working even on iOS 8).

If you want to animate the content of the visual effect view (the subviews), animate the contentView property instead (which you should use to add subviews of the effect view).

[UIView animateWithDuration:0.3 animations:^{
    view.contentView.alpha = 1.0;
}];

So to sum up, you should never change alpha of the UIVisualEffectView itself as it's most likely not what you want.