Xcode iPhone加速计图像
发布时间:2020-12-14 19:11:52 所属栏目:百科 来源:网络整理
导读:我是法国人,请原谅我的英语.所以我使用加速度计,但在我的代码中,加速度计适用于视图而不适用于图像.我想要做的是将此加速度计用于图像而不是视图.我怎样才能做到这一点?这是代码: #define CONST_fps 100.#define CONST_map_shift 0.01#define kFilteringFa
我是法国人,请原谅我的英语.所以我使用加速度计,但在我的代码中,加速度计适用于视图而不适用于图像.我想要做的是将此加速度计用于图像而不是视图.我怎样才能做到这一点?这是代码:
#define CONST_fps 100. #define CONST_map_shift 0.01 #define kFilteringFactor 0.1 UIAccelerationValue rollingX,rollingY,rollingZ; @implementation MapViewRotationViewController - (void)viewDidLoad { [super viewDidLoad]; // accelerometer settings [[UIAccelerometer sharedAccelerometer] setDelegate:self]; [[UIAccelerometer sharedAccelerometer] setUpdateInterval:(1.0 / CONST_fps)]; } - (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration { rollingX = (acceleration.x * kFilteringFactor) + (rollingX * (1.0 - kFilteringFactor)); rollingY = (acceleration.y * kFilteringFactor) + (rollingY * (1.0 - kFilteringFactor)); rollingZ = (acceleration.z * kFilteringFactor) + (rollingZ * (1.0 - kFilteringFactor)); float accelX = acceleration.x - rollingX; float accelY = acceleration.y - rollingY; float accelZ = acceleration.z - rollingZ; static CGFloat ZZ = 0.; CGFloat z = (atan2(rollingX,rollingY) + M_PI); if (fabsf(ZZ - z) > CONST_map_shift) { viewToRotate.layer.transform = CATransform3DMakeRotation(ZZ=z,0.,1.); } } @end 解决方法
您不需要将视图作为回调,而是可以选择任何类以符合协议
UIAccelerometerDelegate.只需在头文件中声明您的类为
@interface MyClass : NSObject <UIAccelerometerDelegate> { // my members } 在MyClass.m中,您必须实现方法 - (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration { // do what you like } 但是,如果您不被迫支持iOS 3.x版,则应考虑使用CoreMotion API.有关更多信息和样本,请参见Event Handling Guide for iOS / Motion Events. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |