Hello nick. Try putting the fromValue also, I had some problems also with the blink, but right now I can't think of what I did to solve it, too much wine!!! :P
maybe put the remove on competition to NO. :S On May 20, 2011, at 10:21 PM, Nick wrote: > Chase, > thank you for your responses. > > I actually tested both your code and the code of Gustavo. For me the result > was the same - the opacity changes back to 1.0 when the animation had > finished and then i hide it, which still causes blinking... > Before the animation starts, i need to set the opacity to 1.0 for your code - > the "animator" uses it as starting value (and the final value is specified by > the line alphaAnimation.toValue = [NSNumber numberWithFloat:0.0];). > > So, since in the Layer Tree the opacity is 1.0, after the animation finishes, > the view becomes opaque again. > > The only thing that worked for me was [[[myView] animator] > setAlphaValue:0.0], which did not end up with the opacity 1.0 after animation > had finished, but i need to use a timer to hide the view. I only was thinking > there would be a "simpler" solution. > > Well, i guess i made up a big problem from a little desire to make my > application to look more "alive" to the user :-) > > Here is a full code that ends up with the opacity 1.0 (instead of 0.0 as i > needed to have) > > CABasicAnimation * alphaAnimation = [CABasicAnimation > animationWithKeyPath:@"opacity"]; > alphaAnimation.delegate = self; > alphaAnimation.removedOnCompletion = YES; > alphaAnimation.autoreverses = NO; > alphaAnimation.timingFunction = [CAMediaTimingFunction > functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; > alphaAnimation.duration = 1.0f; > alphaAnimation.toValue = [NSNumber numberWithFloat:0.0]; > > > [[theView layer] setOpacity:1.0]; > [[theView layer] addAnimation:alphaAnimation forKey:@"opacity"]; > > > > > 2011/5/20 Chase Latta <chasela...@gmail.com> > Did you try making that change in your code? If yes, is your view layer > backed? > > I work mainly on iOS so I could be missing something but the code worked > without blinking for me on 10.6. > > What is happening, as I think I understand it, is that by setting the opacity > of your view's layer to 0.0 you trigger the implicit animation for opacity. > But if you add an animation for the opacity key path that animation will be > used. What you are doing is simply adding an animation. When it finishes it > jumps back to the original value before you hide it. You need to set the > opacity of your layer to zero at some point in your code. The animation that > you see is actually the animation of the presentationLayer. > > I could be wrong on how all this works but my quick test does not cause the > view to blink. > > Chase > > > On May 20, 2011, at 12:26 PM, Nick <eveningn...@gmail.com> wrote: > >> Chase, >> the animation itself worked and works - either with your code or with >> Gustavo's. >> >> But after the animation finishes, the opaqueness of the view again becomes >> 1.0 again. Then the "animationDidStop" gets called and the view disappears. >> But before disappearing, it annoyingly blinks (so, the opaqueness changes >> like this: 1.0, 0.9, 0.8, ..., 0.1, 1.0, hidden). >> >> I am wondering how could i make it save the final state of the animation - >> to remain transparent when the "animationDidStop" callback gets called - >> which will allow the view not to blink. >> >> I understand (i hope i do :-) ) that i am actually changing the opaqueness >> of the layer (i.e., of the temporary graphical representation) and not of >> the view itself, but maybe i could get rid of blinking somehow. >> Thank you! >> >> 2011/5/20 Chase Latta <chasela...@gmail.com>: >> >> How could i force the animation to actually change the alpha value >> >> from 1.0 to 0.0 and make it stay 0.0 unless i change it back? >> > >> > Change your code to look like this: >> > >> > CABasicAnimation * alphaAnimation = ... >> > ... >> > [[theView layer] setOpacity:0.0]; // Set your opacity here >> > [[theView layer] addAnimation:alphaAnimation forKey:@"opacity"]; >> > // Note the key >> > } >> > >> > By setting the key to @"opacity" instead of @"opacityAnimation" your >> > animation will used instead of the default animation when you call >> > [CALayer setOpacity:]. >> > >> > There is a good WWDC talk about animation on the ipad that addresses >> > this. I don't remember the exact talk, though. >> > >> > Chase >> > >> > _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com