我们以秒针为例,说明自定义CALayer的动画效果
首先我们创建一个秒针
// 添加秒针
- (void)addSecond
{
CGFloat imageW = _clockView.bounds.size.width;
CGFloat imageH = _clockView.bounds.size.height;
// 1.添加秒针
CALayer *second = [CALayer layer];
// 2.设置锚点
second.anchorPoint = CGPointMake(0.5, 1);
// 3.设置位置
second.position = CGPointMake(imageW * 0.5, imageH * 0.5);
// 4.设置尺寸
second.bounds = CGRectMake(0, 0, 1, imageH * 0.5 - 20);
// 5.红色
second.backgroundColor = [UIColor redColor].CGColor;
// 添加到图层上
[_clockView.layer addSublayer:second];
_second = second;
}
然后,每隔一秒,调用如下方法:
- (void)update
{
// 获取秒数
// 获取日历对象
NSCalendar *calendar = [NSCalendar currentCalendar];
// 获取日期组件
NSDateComponents *compoents = [calendar components:NSCalendarUnitSecond | NSCalendarUnitMinute | NSCalendarUnitHour fromDate:[NSDate date]];
// 获取秒数
CGFloat sec = compoents.second;
// 算出秒针旋转多少°
CGFloat secondA = sec * perSecendA;
// 旋转秒针
_second.transform = CATransform3DMakeRotation(angle2radian(secondA), 0, 0, 1);
}
自己创建的CALayer,改变一些状态,会自动添加动画效果