前期准备:
CALayer* scanQRBar;
scanQRBar = [CALayer layer];
[scanQRBar setContents:(id)[[UIImage imageWithName:@"QRBar" asWell:YES] CGImage]];
[self.layer addSublayer:scanQRBar];
[scanQRBar setFrame:CGRectMake(0, 0, 170, 170)];
[scanQRBar setPosition:CGPointMake(320/2, 540/2)];
//实例调用。。。
CGRect qrCodeRect = CGRectMake(0, 0,100, 100);
CABasicAnimation* boundsAnimation = [self boundsAnimation:qrCodeRect];
[scanQRBar addAnimation:boundsAnimation forKey:@"boundsAnimation"];
封装了的函数/例子//
-(CABasicAnimation*)scaleXAnimation:(float)x
Autoreverses:(BOOL)reverses
{
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale.x"];
//
[sizeAnimation setFromValue: [NSValue valueWithCGSize:oldImageFrame.size]];
[animation setToValue:[NSNumber numberWithFloat:x]];
[animation setDuration:1.0];
[animation setTimingFunction: [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEa
seIn]];
[animation setRemovedOnCompletion:NO];
[animation setFillMode:kCAFillModeForwards];
[animation setAutoreverses:reverses];
if (reverses)
{
[animation setRepeatCount:HUGE_VALF];
}
return animation;
}
-(CABasicAnimation*)scaleYAnimation:(float)y
Autoreverses:(BOOL)reverses
{
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale.y"];
//
[sizeAnimation setFromValue: [NSValue valueWithCGSize:oldImageFrame.size]];
[animation setToValue:[NSNumber numberWithFloat:y]];
[animation setDuration:1.0];
[animation setTimingFunction: [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEa
seIn]];
[animation setRemovedOnCompletion:NO];
[animation setFillMode:kCAFillModeForwards];
[animation setAutoreverses:reverses];
if (reverses)
{
[animation setRepeatCount:HUGE_VALF];
}
return animation;
}
-(CABasicAnimation*)boundsAnimation:(CGRect)frame
{
CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"bounds"];
[animation setToValue:[NSValue valueWithCGRect:frame]];
[animation setDuration:1.0];
[animation setTimingFunction: [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEa
seIn]];
[animation setRemovedOnCompletion:NO];
[animation setFillMode:kCAFillModeForwards];
return animation;
}
-(CABasicAnimation*)rotationZAnimation:(double)rota
{
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.fromValue = [NSNumber numberWithFloat:M_PI*1];
animation.toValue = [NSNumber numberWithFloat:rota];
animation.autoreverses = NO;
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeForwards;
animation.duration = 1.0;
return animation;
}
-(CABasicAnimation*)opacityAnimation:(double)opacity
{
CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"opacity"];
[animation setToValue:[NSNumber numberWithDouble:opacity]];
[animation setDuration:1.0];
[animation setTimingFunction: [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEa
seIn]];
[animation setRemovedOnCompletion:NO];
[animation setFillMode:kCAFillModeForwards];
return animation;
}
//关于keypath,可用的keypath有
CALayer* scanQRBar;
scanQRBar = [CALayer layer];
[scanQRBar setFrame:CGRectMake(0, 0, 170, 170)];
//实例调用。。。
封装了的函数/例子//
-(CABasicAnimation*)scaleXAnimation:(float)x
{
}
-(CABasicAnimation*)scaleYAnimation:(float)y
{
}
-(CABasicAnimation*)boundsAnimation:(CGRect)frame
{
}
-(CABasicAnimation*)rotationZAnimation:(double)rota
{
}
-(CABasicAnimation*)opacityAnimation:(double)opacity
{
}
//关于keypath,可用的keypath有
transform.scale = 比例轉換
transform.scale.x = 闊的比例轉換
transform.scale.y = 高的比例轉換
transform.rotation.z = 平面圖的旋轉
opacity = 透明度
margin
zPosition
backgroundColor
cornerRadius
borderWidth
bounds
contents
contentsRect
cornerRadius
frame
hidden
mask
masksToBounds
opacity
position
shadowColor
shadowOffset
shadowOpacity
shadowRadius
各种参数的问题参考上一篇博客。。http://blog.sina.com.cn/s/blog_47517dc70101j2r4.html