为了一点乐趣和练习,我正在尝试制作一个简单的模拟时钟iOS应用程序。无论如何,我有一个CGAffineTransformMakeRotation的问题,它只是不起作用。为了开始,我正在转动秒针。但它只是把手放在同一个地方。
那我该怎么做呢?
圆圈中有360度,所以每秒都有(60/360)0.16666666666度。
然后我将其转换为弧度,然后按当前第二次计数。但它并没有真正奏效:(
这是我的代码:
-(void)update_the_timer {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh:mm:ss a"];
time_label.text = [formatter stringFromDate:[NSDate date]];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"hh:mm:ss"];
NSString *test = [dateFormatter stringFromDate:[NSDate date]];
NSDate *time = [dateFormatter dateFromString:test];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond) fromDate: time];
NSInteger seconds = [components second];
// Convert degrees to radians: x * M_PI/180.0
float number = ((0.16666666666 * (M_PI/180.0)) * seconds);
NSLog(@"%f", number);
[UIView animateWithDuration:1.0 animations:^{
second_handle.transform = CGAffineTransformMakeRotation(number);
}];
}
我做错了什么?
感谢你的时间,丹:)
答案 0 :(得分:0)
我认为你只需要在转换为弧度之前将秒数转换为其头部的度数计算,每秒钟都有6度:
float number = (M_PI/180.0) * seconds * 6;