我已经使用以下方法完成了在指南针中旋转针的编码:
NeedleView.transform=CGAffineTransformMakeRotation(theHeading);
但旋转并不顺畅。它正在粗略地移动。
谁能告诉我如何使罗盘针相对于角运动平滑旋转?
我已经使用以下方法完成了在指南针中旋转针的编码:
NeedleView.transform=CGAffineTransformMakeRotation(theHeading);
但旋转并不顺畅。它正在粗略地移动。
谁能告诉我如何使罗盘针相对于角运动平滑旋转?
您可以使用陀螺仪补偿指南针的跳动。我使用该方法完成了一个项目,您可以在此处看到:http: //www.sundh.com/blog/2011/09/stabalize-compass-of-iphone-with-gyroscope/
尝试这个。对我来说效果很好。
- (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];
}
用变换做一个动画,不要只是设置它。如果你设置它,它会立即改变旋转。动画会减慢它。您可以选择动画发生的持续时间以减慢它的速度。查看动画 API 的 UIView 文档。