Как плавно вращать стрелку компаса - PullRequest
2 голосов
/ 09 мая 2011

Я сделал код для вращения иглы в компасе, используя:

NeedleView.transform=CGAffineTransformMakeRotation(theHeading); 

но вращение не плавное. Это движется примерно.

Может кто-нибудь сказать мне, как сделать плавное вращение стрелки компаса относительно углового движения?

Ответы [ 3 ]

3 голосов
/ 19 сентября 2011

Вы можете компенсировать скачкообразность компаса с помощью гироскопа. Я сделал проект с использованием этого метода, который вы можете увидеть здесь: http://www.sundh.com/blog/2011/09/stabalize-compass-of-iphone-with-gyroscope/

1 голос
/ 07 февраля 2015

Попробуй это.Хорошо работает для меня.

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {
self.lblGrados.text = [NSString stringWithFormat:@"%.0f°", newHeading.magneticHeading];

[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{

needle.transform = CGAffineTransformMakeRotation((degrees-newHeading.trueHeading) * M_PI / 180);
    } completion:nil];


}
0 голосов
/ 09 мая 2011

Сделайте анимацию с преобразованием, а не просто установите его. Если вы установите его, он сразу изменит вращение. Анимация замедлит это. Вы можете выбрать продолжительность анимации, чтобы замедлить ее. Посмотрите документы для UIView для API анимации.

...