mrackwitz / MRProgress

Collection of iOS drop-in components to visualize progress
MIT License
2.55k stars 306 forks source link

Blur view delay #91

Open baumerdev opened 9 years ago

baumerdev commented 9 years ago

The display of the blurred background is delayed in [MRBlurView didMoveToWindow] by either CATransaction.animationDuration (if greater zero) or by 0.25 seconds.

When using the Example project I can reproduce this on my iPhone 6 with iOS 8.1.3 as well as all simulators for iOS 8 and 7.1. If I choose the “Blur View” or the “Progress Overlay View” example those 0.25 seconds looks like a glitch or as if the image rendering takes too long.

This is how it looks just after the MRProgress ended its fade-in animation:

image

and after the the timeInterval of 0.25 seconds (CATransaction.animationDuration’s value) it looks like it should have from the beginning.

image

If I set the timeInterval manually to 0.01 seconds there is no visual delay and the blurred image is shown directly (or after 0.01 which isn’t perceptible for the human eye).

The comment before that delayed dispatch states “This is needed e.g. for the push animation of UINavigationController.” but I cannot see why. Even on the iOS 7.1 in iPhone 4s simulator it looks okay with a 0.01 seconds time interval when choosing „Blur View“ (which is a UINavigationController push action that is performed).

I guess this delay was intended for taking the screenshots, that the screenshot should be taken after the push animation has ended (and not taking a screenshot for blurring before or during the animation which would look very wrong). But since I cannot reproduce that possible error I am not sure if the delay is really necessary.