CAAnimation isn't that complicated.

CABasicAnimation * alphaAnimation  = [CABasicAnimation 
animationWithKeyPath:@"opacity"];
alphaAnimation.delgate = self;
alphaAnimation.removedOnCompletition =  YES;
alphaAnimation.autoreverses = NO;
alphaAnimation.timingFunction = [CAMediaTimingFunction 
functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
alphaAnimation.duration = 1.0f;
alphaAnimation.toValue = [NSNumber numberWithFloat:0.0];

[myView.layer addAnimation:alphaAnimation forKey:@"opacityAnimation"];

then you can implement the delegate's method

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag

and do whatever you need there after completition

Note: remember to put your view to acceptLayer to YES;

you can change that property anytime, but don't do it so ofthen :P


I  hope it helps

BTW I wrote this on mail app so I hadn't compile it or run it.



On May 20, 2011, at 12:35 PM, Nick wrote:

> This sample works exactly as mine - the button remains on the screen
> completely opaque and the suddenly disappears after 0.25 secs pass.
> (Snow Leopard)
> 
> So i guess unless i find time to read that huge guide about Core
> Animation and manage to adapt CAAnimation, i will use that approach
> with [[myview animator] setAlphaValue:0.0]; and a timer that hides the
> view, which was suggested by Chase
> 
> 
> 2011/5/20 Quincey Morris <quinceymor...@earthlink.net>:
>> On May 19, 2011, at 15:01, Nick wrote:
>> 
>>> No, only fade out (and fade in) effects are needed. I just added frame
>>> movement to see if animation works at all. Animation does work, but
>>> the fade does not happen - no matter, if the frame is moved
>>> simultaneously or not.
>> 
>> Here's my actual code for doing this. It works.
>> 
>>>       NSMutableArray* dictionaries = [NSMutableArray array];
>>> 
>>>       //      Create a dictionary for the animation parameters
>>> 
>>>       NSMutableDictionary* dictionary = [NSMutableDictionary 
>>> dictionaryWithObject: subview forKey: NSViewAnimationTargetKey];
>>>       [dictionaries addObject: dictionary];
>>> 
>>>       //      Add a key for the target frame rect, if necessary
>>> 
>>>       if (!shouldBeHidden || !NSEqualRects (oldFrameRect, newFrameRect))
>>>               [dictionary setObject: [NSValue valueWithRect: newFrameRect] 
>>> forKey: NSViewAnimationEndFrameKey];
>>> 
>>>       //      If the visibility is changing, add a key for the fade in or 
>>> out
>>> 
>>>       if (!isHidden != !shouldBeHidden)
>>>       {
>>>               [dictionary setObject: shouldBeHidden ? 
>>> NSViewAnimationFadeOutEffect : NSViewAnimationFadeInEffect forKey: 
>>> NSViewAnimationEffectKey];
>>> 
>>>               //      Work around a Snow Leopard bug ...
>>> 
>>>               if (!shouldBeHidden)
>>>                       [subview setHidden: shouldBeHidden];
>>>       }
>>> 
>>>       //      Create the animation
>>> 
>>>       NSViewAnimation* viewAnimation = [[NSViewAnimation alloc] 
>>> initWithViewAnimations: dictionaries];
>>> 
>>>       viewAnimation.duration = 0.25;
>>>       viewAnimation.animationCurve = NSAnimationEaseIn;
>>> 
>>>       [viewAnimation startAnimation];
>> 

_______________________________________________

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