将accelemermeter.y -.75重置为0

时间:2013-08-21 17:02:42

标签: accelerometer ios7 core-motion xcode5

在xcode 5中,我使用coremotion获取加速计数据,然后使用它在屏幕上向右/向左和向上/向下移动对象。右侧工作完美,因为x轴的0中心点是直线向上的。然而,大多数人的手机在y轴上的角度约为-75°。我想将其重置为0轴,以便当手机从此点向后倾斜时,物体向下移动,当它们从此点向前倾斜(朝向90度)时,物体向上移动。我已经尝试将y中心的最小值和最大值设置为各个点,但无论我做什么,对象仅相对于直接向上的原始y 0移动。这是我的代码。

在视图中加载了

self.motionManager = [[CMMotionManager alloc] init];
    self.motionManager.accelerometerUpdateInterval = .05;


    [self.motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue]
                                             withHandler:^(CMAccelerometerData  *accelerometerData, NSError *error) {
                                                 [self outputAccelertionData:accelerometerData.acceleration];
                                                 if(error){

                                                     NSLog(@"%@", error);
                                                 }
                                             }];

并分开

-(void)outputAccelertionData:(CMAcceleration)acceleration
{
 delta.x = acceleration.x * 10;
    delta.y =  acceleration.y * 10;
imageView2.center = CGPointMake(imageView2.center.x - delta.x, imageView2.center.y + delta.y);
            if (imageView2.center.x < 145) {
                imageView2.center = CGPointMake(145, imageView2.center.y);
            }
            if (imageView2.center.x > 165) {
                imageView2.center = CGPointMake(165, imageView2.center.y);
            }

            if (imageView2.center.y < 0) {
               imageView2.center = CGPointMake( imageView2.center.x,0);
            }

            if (imageView2.center.y >600) {
                imageView2.center = CGPointMake(imageView2.center.x,600);
                NSLog(@"imageViewcenter%f",imageView2.center.y);
            }
 }

感谢您的帮助。

0 个答案:

没有答案