CGAffineTransformMakeRotation无效 - UIImageView - iOS

时间:2014-12-08 20:17:00

标签: ios cocoa-touch uiimageview rotation cgaffinetransform

为了一点乐趣和练习,我正在尝试制作一个简单的模拟时钟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);
}];
}

我做错了什么?

感谢你的时间,丹:)

1 个答案:

答案 0 :(得分:0)

我认为你只需要在转换为弧度之前将秒数转换为其头部的度数计算,每秒钟都有6度:

float number = (M_PI/180.0) * seconds * 6;