Для некоторой забавы и практики я пытаюсь сделать простое приложение iOS для аналоговых часов. Во всяком случае, у меня проблема с CGAffineTransformMakeRotation, она просто не работает. Чтобы начать с, я вращаю вторую руку. Но он просто держит руку в одном месте.CGAffineTransformMakeRotation не работает - UIImageView - iOS
Как я могу это сделать?
Хорошо по кругу есть 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);
}];
}
Что я делаю не так ??
Спасибо за ваше время, Дэн :)
FYI - не связанный с вашей проблемой, но вы не должны воссоздавать свои форматиры даты снова и снова. Создайте их один раз и сохраните их в переменных экземпляра, чтобы вы могли повторно использовать их снова и снова. Они дороги для создания. Кроме того, не называйте '[NSDate date]' дважды. Вызовите его один раз и сохраните в переменной. Это более эффективно, и каждый из них использует работу с той же датой каждый раз. – rmaddy
@rmaddy Спасибо за совет. Я обязательно это сделаю. Еще раз спасибо. – Supertecnoboff
У этого есть несколько примеров: http://www.raywenderlich.com/5478/uiview-animation-tutorial-practical-recipes –