UIView之所以能显示在屏幕上,完全是因为它内部的一个层,UIView本身不具备显示的功能,是它内部的层才有显示功能。
创建UIView对象时,UIView内部会自动创建一个层(即CALayer对象),通过UIView的layer属性可以访问这个层。当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的层上,绘图完毕后,系统会将层拷贝到屏幕上,于是就完成了UIView的显示。
shadowColor: // 阴影颜色
shadowOffset = CGSizeMake(x,y):// 阴影位置
shadowOpacity: // 透明度
cornerRadius: // (圆角)半径
masksToBounds = YES/NO; // 强制内部的所有子层跟随layer的边界效果
CALayer通过AddSubLayer方法添加子层
layer.bounds = CGRectMake(0,0,100,100); // 尺寸
layer.position = CGPointMake(100,100); // 中点会在position所指的位置
无论采取哪种方法自定义层,都必须调用CALayer的setNeedsDisplay方法才能正常绘图: // 通知层进行绘制
CAAnimation的常用属性:
duration:持续时间
repeatCount:重复次数
timingFunction:动画运行节奏
timingFunction可选的值:
- kCAMediaTimingFunctionLinear(线性)
- kCAMediaTimingFunctionEaseIn(渐进)
- kCAMediaTimingFunctionEaseOut(渐出)
- kCAMediaTimingFunctionEaseInEaseOut(渐进渐出)
@interface NSObject (CAAnimationDelegate)
// 动画开始执行的时候触发这个方法
- (void)animationDidStart:(CAAnimation *)anim;
// 动画执行完毕的时候触发这个方法
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag;
@end
// 动画开始执行的时候触发这个方法
- (void)animationDidStart:(CAAnimation *)anim;
// 动画执行完毕的时候触发这个方法
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag;
@end