Successfully reported this slideshow.
Learning Core AnimationLouis Zhu13年6月3日星期⼀一
13年6月3日星期⼀一
Layer13年6月3日星期⼀一
Layer• The key of Core Animation• Merely manages the state information surrounding abitmap• Consider as model in MVC13年6月3...
13年6月3日星期⼀一
13年6月3日星期⼀一
Transformstruct CATransform3D{CGFloat m11, m12, m13, m14;CGFloat m21, m22, m23, m24;CGFloat m31, m32, m33, m34;CGFloat m41...
Presentation layer13年6月3日星期⼀一
Provide contents• Using an image• Using a delegate13年6月3日星期⼀一
Using an imageCALayer *layer = someView.layer;layer.contents = (id)someCGImage;layer.contentScale = kScreenScale;13年6月3日星期⼀一
Using a delegate- (void)displayLayer:(CALayer *)theLayer {// Check the value of some state propertyif (self.displayYesImag...
Using a delegate- (void)drawLayer:(CALayer *)theLayer inContext:(CGContextRef)theContext {CGMutablePathRef thePath = CGPat...
Layer’s appearance@property(copy) NSString *contentsGravity;@property CGFloat contentsScale;@property CGColorRef backgroun...
Basic animation13年6月3日星期⼀一
Basic animation• CABasicAnimation• keyPath• fromValue• toValue• duration13年6月3日星期⼀一
Demo13年6月3日星期⼀一
Keyframe animation13年6月3日星期⼀一
Using path- (void)animatePosition {CAKeyframeAnimation *theAnimation =[CAKeyframeAnimation animationWithKeyPath:@"position...
Demo13年6月3日星期⼀一
Specify values and timing- (void)animateBorder {CAKeyframeAnimation *widthAnimation = [CAKeyframeAnimationanimationWithKey...
Multiple animationsCAAnimationGroup *group = [CAAnimationGroup animation];group.animations = @[animation0, animation1];gro...
Demo13年6月3日星期⼀一
Stop an animation[theLayer addAnimation:theAnimation forKey:@"animationKey"];// somedays later[theLayer removeAnimationFor...
Detecting animation’s end// invoking in the delegate- (void)animationDidStart:(CAAnimation *)theAnimation- (void)animation...
One more thing...13年6月3日星期⼀一
Animatable properties• http://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreAnimation_guide/Animatabl...
13年6月3日星期⼀一
Upcoming SlideShare
Loading in …5
×

Learning Core Animation

456 views

Published on

  • Be the first to comment

  • Be the first to like this

Learning Core Animation

  1. 1. Learning Core AnimationLouis Zhu13年6月3日星期⼀一
  2. 2. 13年6月3日星期⼀一
  3. 3. Layer13年6月3日星期⼀一
  4. 4. Layer• The key of Core Animation• Merely manages the state information surrounding abitmap• Consider as model in MVC13年6月3日星期⼀一
  5. 5. 13年6月3日星期⼀一
  6. 6. 13年6月3日星期⼀一
  7. 7. Transformstruct CATransform3D{CGFloat m11, m12, m13, m14;CGFloat m21, m22, m23, m24;CGFloat m31, m32, m33, m34;CGFloat m41, m42, m43, m44;};13年6月3日星期⼀一
  8. 8. Presentation layer13年6月3日星期⼀一
  9. 9. Provide contents• Using an image• Using a delegate13年6月3日星期⼀一
  10. 10. Using an imageCALayer *layer = someView.layer;layer.contents = (id)someCGImage;layer.contentScale = kScreenScale;13年6月3日星期⼀一
  11. 11. Using a delegate- (void)displayLayer:(CALayer *)theLayer {// Check the value of some state propertyif (self.displayYesImage) {// Display the Yes imagetheLayer.contents = [someHelperObject loadStateYesImage];}else {// Display the No imagetheLayer.contents = [someHelperObject loadStateNoImage];}}13年6月3日星期⼀一
  12. 12. Using a delegate- (void)drawLayer:(CALayer *)theLayer inContext:(CGContextRef)theContext {CGMutablePathRef thePath = CGPathCreateMutable();CGPathMoveToPoint(thePath,NULL,15.0f,15.f);CGPathAddCurveToPoint(thePath,NULL,15.f,250.0f,295.0f,250.0f,295.0f,15.0f);CGContextBeginPath(theContext);CGContextAddPath(theContext, thePath);CGContextSetLineWidth(theContext, 5);CGContextStrokePath(theContext);CFRelease(thePath);}13年6月3日星期⼀一
  13. 13. Layer’s appearance@property(copy) NSString *contentsGravity;@property CGFloat contentsScale;@property CGColorRef backgroundColor;@property CGFloat cornerRadius;@property CGFloat borderWidth;@property CGColorRef borderColor;@property float opacity;@property(copy) NSArray *filters;@property CGColorRef shadowColor;@property float shadowOpacity;@property CGSize shadowOffset;13年6月3日星期⼀一
  14. 14. Basic animation13年6月3日星期⼀一
  15. 15. Basic animation• CABasicAnimation• keyPath• fromValue• toValue• duration13年6月3日星期⼀一
  16. 16. Demo13年6月3日星期⼀一
  17. 17. Keyframe animation13年6月3日星期⼀一
  18. 18. Using path- (void)animatePosition {CAKeyframeAnimation *theAnimation =[CAKeyframeAnimation animationWithKeyPath:@"position"];theAnimation.path = someCGPath;theAnimation.duration = 5.0;[theLayer addAnimation:theAnimation forKey:@"position"];}13年6月3日星期⼀一
  19. 19. Demo13年6月3日星期⼀一
  20. 20. Specify values and timing- (void)animateBorder {CAKeyframeAnimation *widthAnimation = [CAKeyframeAnimationanimationWithKeyPath:@"borderWidth"];NSArray *widthValues = @[@1.0, @10.0, @5.0, @0.0];widthAnimation.values = widthValues;widthAnimation.calculationMode = kCAAnimationPaced;widthAnimation.keyTimes = @[@0.0f, @0.66667f, @1.0f];[theLayer addAnimation:widthAnimation forKey:@"borderWidth"];}13年6月3日星期⼀一
  21. 21. Multiple animationsCAAnimationGroup *group = [CAAnimationGroup animation];group.animations = @[animation0, animation1];group.duration = 5.0;[layer addAnimation:group forKey:@"groupedAnimations"];13年6月3日星期⼀一
  22. 22. Demo13年6月3日星期⼀一
  23. 23. Stop an animation[theLayer addAnimation:theAnimation forKey:@"animationKey"];// somedays later[theLayer removeAnimationForKey:@"animationKey"];13年6月3日星期⼀一
  24. 24. Detecting animation’s end// invoking in the delegate- (void)animationDidStart:(CAAnimation *)theAnimation- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag13年6月3日星期⼀一
  25. 25. One more thing...13年6月3日星期⼀一
  26. 26. Animatable properties• http://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreAnimation_guide/AnimatableProperties/AnimatableProperties.html#//apple_ref/doc/uid/TP40004514-CH11-SW113年6月3日星期⼀一
  27. 27. 13年6月3日星期⼀一

×