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

Reply via email to