@interface ViewController ()
@property (strong, nonatomic) UIImageView *clockImageView
@property (strong, nonatomic) CALayer *secondLayer
@property (strong, nonatomic) CALayer *minuteLayer
@property (strong, nonatomic) CALayer *hourLayer
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad]
[self.view addSubview:self.clockImageView]
[self.clockImageView.layer addSublayer:self.secondLayer]
[self.clockImageView.layer addSublayer:self.minuteLayer]
[self.clockImageView.layer addSublayer:self.hourLayer]
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timeChange) userInfo:nil repeats:YES]
[self timeChange]
}
- (void)timeChange {
//让秒针开始旋转
//获取当前的秒数
//获取当前的日历
NSCalendar *calendar = [NSCalendar currentCalendar]
//从什么时间获取日历当中的哪些组件(年,月,日,时,分,秒)
NSDateComponents *dateComponents = [calendar components:NSCalendarUnitSecond | NSCalendarUnitMinute | NSCalendarUnitHour fromDate:[NSDate date]]
//当前时间的秒数
NSInteger curSecond = dateComponents.second
NSInteger curMinute = dateComponents.minute
NSInteger curHour = dateComponents.hour
NSLog(@"%ld-%ld-%ld",curHour,curMinute,curSecond)
//求角度 = 当前的秒数 * 每一秒旋转多少度
CGFloat secA = curSecond * perSecA
self.secondLayer.transform = CATransform3DMakeRotation(angleToRadio(secA), 0, 0, 1)
//旋转分针
//求角度 = 当前多少分 * 每一分旋转多少度
CGFloat minA = curMinute * perMinA
self.minuteLayer.transform = CATransform3DMakeRotation(angleToRadio(minA), 0, 0, 1)
//旋转时针
//求角度 = 当前多少小时 * 每一小时旋转多少度
CGFloat hourA = curHour * perHourA + curMinute * perMinHourA
self.hourLayer.transform = CATransform3DMakeRotation(angleToRadio(hourA), 0, 0, 1)
}
- (UIImageView *)clockImageView {
if (!_clockImageView) {
_clockImageView = [[UIImageView alloc] init]
_clockImageView.frame = CGRectMake(100, 100, 200, 200)
_clockImageView.contentMode = UIViewContentModeScaleAspectFit
_clockImageView.image = [UIImage imageNamed:@"clock"]
_clockImageView.backgroundColor = [[UIColor redColor] colorWithAlphaComponent:0.3]
}
return _clockImageView
}
- (CALayer *)secondLayer {
if (!_secondLayer) {
_secondLayer = [CALayer layer]
_secondLayer.backgroundColor = [UIColor redColor].CGColor
_secondLayer.bounds = CGRectMake(0, 0, 1, 80)
_secondLayer.anchorPoint = CGPointMake(0.5, 1)
_secondLayer.position = CGPointMake(self.clockImageView.bounds.size.width * 0.5, self.clockImageView.bounds.size.height * 0.5)
}
return _secondLayer
}
- (CALayer *)minuteLayer {
if (!_minuteLayer) {
_minuteLayer = [CALayer layer]
_minuteLayer.backgroundColor = [UIColor blackColor].CGColor
_minuteLayer.bounds = CGRectMake(0, 0, 2, 70)
_minuteLayer.anchorPoint = CGPointMake(0.5, 1)
_minuteLayer.position = CGPointMake(self.clockImageView.bounds.size.width * 0.5, self.clockImageView.bounds.size.height * 0.5)
}
return _minuteLayer
}
- (CALayer *)hourLayer {
if (!_hourLayer) {
_hourLayer = [CALayer layer]
_hourLayer.backgroundColor = [UIColor blackColor].CGColor
_hourLayer.bounds = CGRectMake(0, 0, 3, 60)
_hourLayer.anchorPoint = CGPointMake(0.5, 1)
_hourLayer.position = CGPointMake(self.clockImageView.bounds.size.width * 0.5, self.clockImageView.bounds.size.height * 0.5)
}
return _hourLayer
}
@end
