gpt4 book ai didi

ios - 根据 iDevice 磁强计读数旋转 UIView

转载 作者:行者123 更新时间:2023-11-29 02:17:46 30 4
gpt4 key购买 nike

我有一个包含一些点的 UIView,我通过 CLLocationManager 让它根据磁力计的读数旋转,如下所示:

@interface PresentationVC () {
float initialBearing;
}
@end

@implementation PresentationVC
- (void)viewDidLoad {
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
[self.locationManager startUpdatingHeading];
[self.locationManager startUpdatingLocation];
}
#pragma mark - CLLocationManager Delegate
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {
if(initialBearing == 0) {
initialBearing = newHeading.magneticHeading;
}
NSLog(@"Magnetic Heading: %f", newHeading.magneticHeading);
viewMap.transform = CGAffineTransformMakeRotation(degreesToRadians(initialBearing - newHeading.magneticHeading));
}

@end

viewMapUIView

上面的代码有效,但我想将 UIView 的变换设置为 0 度/弧度,即 CGAffineTransformMakeRotation(0)。当前初始设置为当前方位,例如157度。

我尝试在上面的代码中使用initialBearing来计算偏移角度,但它最初仍然旋转了一个角度。我错过了什么?

此外,我无法 360 度旋转; CGAffineTransformMakeRotation() 在我几乎转动 180 度时反弹回旋转。如何在不弹跳的情况下进行完整的 360 度旋转? (估计是弧度问题)

最佳答案

最终我发现 DegreeToRadians() 出现故障,导致弧度计算不正确。

// this is malfunctioned
#define degreesToRadians(degrees) (M_PI * degrees / 180.0)

// this is working, thanks @TonyMkenu
#define DEGREES_TO_RADIANS(angle) ((angle) / 180.0 * M_PI)

关于ios - 根据 iDevice 磁强计读数旋转 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28556027/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com