Great that did the trick :-) Thanks, Gustavo 2011/5/21 Gustavo Pizano <gustavxcodepic...@gmail.com>
> 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>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