UIView を回転させようとしています。この UIView は、時計の秒ポインターを表します。
毎秒更新する必要があります。このような:
- (void)startUpdates {
_updateTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(animatePointer) userInfo:nil repeats:YES];
}
次のように、必要なときに停止します。
- (void)stopUpdates {
[_updateTimer invalidate];
_updateTimer = nil;
}
次のように、1 秒ごとに次のようにアニメーション化します。
- (void)animatePointer {
NSDate *now = [NSDate date];
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSSecondCalendarUnit fromDate:now];
float angleForSeconds = (float)[components second] / 60.0;
[UIView animateWithDuration:1.0 animations:^(void){
_pointerGlow.layer.transform = CATransform3DMakeRotation((M_PI * 2) * angleForSeconds, 0, 0, 1);
}];
}
これは機能しますが、スムーズではありません。典型的な壁掛け時計のように、毎秒、ほんの一瞬停止します。いいですが、私が目指しているものではありません。
このアニメーションを滑らかにする方法はありますか?