Question

i wonder how i can have continuos and repeating animations on my Views w/o freezing the rest of my app - since my current approaches lead into 100% animation, 0% user interaction possible - which is kind of .. bad.

the animation in general is simple: i want to make an uilabel act like a siren, altering the alpha-property from 1 to 0 and back and so forth.

the basic animation block therefore is:

    [UIView animateWithDuration:0.4f
                          delay:0.0f
                        options:UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse | UIViewAnimationOptionBeginFromCurrentState
                     animations:^(void){warningMessage.alpha = 0;}
                     completion:NULL];    

i tried to call it in background, in backgroundthreads, even in an async GCD block, each time i loose control of the app - but the animation works fine. (ok, apple docs say it MUST happen on main thread, but i tried..)

Now again, the question: how to have both of it? is it even possible in that way?

Thanks in advance!

P.S.: Sry if this is quite a repost, did not find a proper solution/question here!

P.P.S: yes, i know that sirens dont alter their alpha propery :P

Was it helpful?

Solution

did you try adding the UIViewAnimationOptionAllowUserInteraction to the options flag?

OTHER TIPS

Well.. doing animations with uikit is for sure easy .. but I would not call it very efficient. You just animate the alpha, but there is much more happening in the background. :)

Animations already run in a different thread.. so starting it on an other thread won't help you.

As a solution I would register a CADisplayLink in your application and change the alpha of the view in it's update function ... that will be much more efficient if you run it all the time.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top