使用CALayer
制作一个钟表。
一、分析
钟表由一个表盘和三个指针组成,三个指针分别是时、分、秒,且指针的一个端点是表盘的中心点,指针围绕着表盘中心点顺时针旋转。
表盘就是一张图片,只需要控制指针旋转就可以了。怎么旋转呢?
1.1. 第一步:绘制指针
指针使用CALayer
绘制,把指针position
设为表盘的中心点,anchorPoint
设为(0.5, 1.0)
,这时候指针的一端就固定在表盘中心点了。
1 | @property (nonatomic, strong) CALayer *secondsLayer; // 秒针 |
1.2. 第二步:旋转
由于指针旋转一周是360°,每一秒就是6°。指针围绕坐标系z轴旋转,每一秒旋转6°就可以了。
1 | // 每一格(秒)度数 |
1.3. 第三步:获取当前时间秒数
获取秒数可以使用NSDate
,也可以使用NSCalendar
,建议使用后者。因为NSCalendar
可以精确获取到当前时区的年月日时分秒,不需要额外去计算。
1 | NSCalendar *calendar = [NSCalendar currentCalendar]; |
1.4. 第四步:添加定时器
有了秒数和旋转度数,只需要添加一个定时器去刷新就可以了,定时器间隔为1s。
1 | NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:timeInterval target:self selector:@selector(timeValueChanged:) userInfo:nil repeats:YES]; |
1.5. 第五步:完善其他指针
时针和分针的思路与分针一样,分别按照自己的时间度数旋转。
1 | / 每一分度数 |
二、完整代码
DBClockView
1 | // DBClockView.h |
ViewController使用
1 | - (void)viewDidLoad { |