oup.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 的大小,但是不能控制 位置
8. opacity :UIView 的透明效果
9. cornerRadius :UIView 的圆角
这些属性和UIView的属性很像,可以实现UIView实现不了的效果。
其实,我觉得UIKIT中声明的那么组件如UITextfield,uilable,uibutton,其实就是UIView的扩展,封装好了方便使用而已。
总结
在IOS中动画效果从layer层开始,向layer中添加CABasicAnimation对象,实际上就是layer中有一个预定义的功能,在视图viewDidAppear后就会执行这个功能点。
可能是因为CABasicAnimation稍微复杂点,IOS又封装出来一个类CATransition,它实现的功能有限,一些基本的动画操作如
可能是从方便使用的角度考虑,IOS又对UIView做了可做,有了beginAnimations:nil或animateWithDuration:animations:completion:等方法,可更方便地实现一些动画效果。
但是,如果要实现复杂的,更吸引人的动画,还需要在CALayer上下功夫。