Graphics Reference
In-Depth Information
//create a path
UIBezierPath
*bezierPath = [[
UIBezierPath
alloc
]
init
];
[bezierPath
moveToPoint
:
CGPointMake
(
0
,
150
)];
[bezierPath
addCurveToPoint
:
CGPointMake
(
300
,
150
)
controlPoint1
:
CGPointMake
(
75
,
0
)
controlPoint2
:
CGPointMake
(
225
,
300
)];
//draw the path using a CAShapeLayer
CAShapeLayer
*pathLayer = [
CAShapeLayer
layer
];
pathLayer.
path
= bezierPath.
CGPath
;
pathLayer.
fillColor
= [
UIColor
clearColor
].
CGColor
;
pathLayer.
strokeColor
= [
UIColor
redColor
].
CGColor
;
pathLayer.
lineWidth
=
3.0f
;
[
self
.
containerView
.
layer
addSublayer
:pathLayer];
//add a colored layer
CALayer
*colorLayer = [
CALayer
layer
];
colorLayer.
frame
=
CGRectMake
(
0
,
0
,
64
,
64
);
colorLayer.
position
=
CGPointMake
(
0
,
150
);
colorLayer.
backgroundColor
= [
UIColor
greenColor
].
CGColor
;
[
self
.
containerView
.
layer
addSublayer
:colorLayer];
//create the position animation
CAKeyframeAnimation
*animation1 = [
CAKeyframeAnimation
animation
];
animation1.
keyPath
=
@"position"
;
animation1.
path
= bezierPath.
CGPath
;
animation1.
rotationMode
=
kCAAnimationRotateAuto
;
//create the color animation
CABasicAnimation
*animation2 = [
CABasicAnimation
animation
];
animation2.
keyPath
=
@"backgroundColor"
;
animation2.
toValue
= (
__bridge
id
)[
UIColor
redColor
].
CGColor
;
//create group animation
CAAnimationGroup
*groupAnimation = [
CAAnimationGroup
animation
];
groupAnimation.
animations
=
@[
animation1, animation2
]
;
groupAnimation.
duration
=
4.0
;
//add the animation to the color layer
[colorLayer
addAnimation
:groupAnimation
forKey
:
nil
];
}