作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含一些点的 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
viewMap
是 UIView
。
上面的代码有效,但我想将 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/
我是一名优秀的程序员,十分优秀!