У меня есть UIImageView, который настроен на перемещение вверх и вниз по экрану со значением акселерометра, используя следующий код:
ship.center = CGPointMake(ship.center.x, ship.center.y+shipPosition.y);
Где shipPosition
— это точка CGPoint, установленная в методе accelerometerDidAccelerate с использованием:
shipPosition.y = acceleration.x*60;
Очевидно, что это прекрасно работает, это очень просто. У меня возникают проблемы, когда я пытаюсь сделать что-то столь же простое, изменяя вращение изображения в зависимости от его ускорения. Я делаю это, используя:
ship.transform = CGAffineTransformMakeRotation(shipPosition.y);
По какой-то причине это вызывает очень странную вещь: изображение возвращается к своему исходному состоянию каждый раз, когда вызывается основной метод. Я вижу кадры, в которых изображение перемещается туда, где оно должно быть, но затем мгновенно возвращается обратно.
Эта проблема возникает только тогда, когда у меня есть строка вращения, закомментированная, она работает нормально. Я понятия не имею, что здесь происходит, я делал это много раз для разных приложений, и у меня никогда не было такой проблемы. На самом деле я скопировал свой код из другого созданного мной приложения, где он отлично работает.
ИЗМЕНИТЬ:
Что действительно меня смущает, так это когда я меняю угол поворота с ускорения на положение корабля, используя:
ship.transform = CGAffineTransformMakeRotation(ship.center.y/10);
Когда я это делаю, корабль на самом деле вращается в зависимости от акселерометра, но не движется, что безумно, потому что изменение ship.center.y
означает, что положение корабля меняется, но это не так!!