iOS动画技术笔记(2)
self.view.backgroundColor =[UIColor blackColor];
self.title = [[self class]displayName];
UIImage *image = [UIImageimageNamed:@"batman.png"];
logoLayer = [CALayer layer];
logoLayer.bounds =CGRectMake(0, 0, image.size.width, image.size.height);
logoLayer.position =CGPointMake(160, 180);
logoLayer.contents =(id)image.CGImage;
// Add layer as a sublayerof the UIView's layer
[self.view.layeraddSublayer:logoLayer];
}
- (void)scaleByFactor:(CGFloat)factor {
CABasicAnimation*scaleAnimation = [CABasicAnimationanimationWithKeyPath:@"transform.scale"];
NSNumber *scaleFactor =[NSNumber numberWithFloat:factor];
scaleAnimation.toValue =scaleFactor;
scaleAnimation.duration =3.0f;
scaleAnimation.timingFunction= [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
// Set the model layer'sproperty so the animation sticks at the 'toValue' state
[logoLayer addAnimation:scaleAnimationforKey:@"transformAnimation"];
}
这里动画效果还只是针对一个视图对象的,如果需要多个视图同时操作,则需要实现动画联动,也就是CAAnimationGroup。将多个CABasicAnimation对象就加到一个数组中,再将这个数组设置到CAAnimationGroup的对象中,最后将CAAnimationGroup的对象加到图层的动画属性中。
CAAnimationGroup*animationGroup = [CAAnimationGroup animation];
animationGroup.duration =2.0f;
animationGroup.autoreverses= YES;
animationGroup.repeatCount =HUGE_VALF;
[animationGroupsetAnimations:[NSArray arrayWithObjects:rotationAnimation, scaleAnimation,nil]];
[logoLayeraddAnimation:animationGroup forKey:@"animationGroup"];
如果需要在图层上更精细的设置,那么需要CALayer上做扩展,形成各种各样的子类。
CALayer的子类有:
1) CAScrollLayer,用于简化显示层的一部分
2) CATextLayer,便于从字符串生成内容是文本的层
3) CATiledLayer,可用于显示复杂的图片
4) CAOpenGLLayer,提供OpenGLES渲染环境
CALayer能够对 UIView 做许多设定,如:阴影、边框、圆角和透明效果等,且这些设定都是很有用的。它的重要属性如下。
1. shadowPath :设置 CALayer 背景(shodow)的位置
2. shadowOffset :shadow 在 X 和 Y 轴 上延伸的方向,即shadow 的大小
3. shadowOpacity: shadow 的透明效果
4. shadowRadius :shadow 的渐变距离,从外围开始,往里渐变 shadowRadius 距离
5. masksToBounds: 很重要的属性,可以用此属性来防止子元素大小溢出父元素,如若防止溢出,请设为 true
6.borderWidth 和 boarderColor : 边框颜色和宽度,很常用
7. bounds :对于我来说比较难的一个属性,测了半天也没完全了解,只知道可以用来控制UIView 的大小,但是不能控制 位置
相关新闻>>
- 发表评论
-
- 最新评论 更多>>