Как я могу повернуть изображение в ответ на акселерометр iPhone? - PullRequest
4 голосов
/ 05 июня 2009

Привет, я использую акселерометр для поворота изображения вида через ориентацию устройства, например UIInterfaceOrientationLandscapeRight и т. Д. если я не использую ориентацию устройства (если я кладу iphone на стол, акселерометр должен работать под определенным углом. Устройство находится в UIInterfaceOrientationPortrait), как я могу это сделать? я поворачиваю изображение через центр этого изображения, но не могу понять, на какой угол оно поворачивается, вращается ли оно по центру (как начало координат)? ( я хочу графическое представление с происхождением ), если я хочу остановить вращение на определенный угол, как я могу это сделать? Код: любой может мне помочь ...?

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration 
{
    rollingX =  (acceleration.x * 0.1) + (rollingX * (1.0 - 0.1));
    rollingY =  (acceleration.y * 0.1) + (rollingY * (1.0 - 0.1));

    float xx = -rollingX; 
    float yy = rollingY;
    float angle = atan2(yy, xx); 
        self.angle += M_PI / 2.0;

    if(self.angle >= -2.25 && self.angle <= -0.25)
    {
        if(deviceOrientation != UIInterfaceOrientationPortrait)
        {
            deviceOrientation = UIInterfaceOrientationPortrait;
            self.updatingIsEnabled =YES;
            self.foamView.center = CGPointMake(center.x,center.y);
        }

    }
    else if(self.angle >= -1.75  && self.angle <= 0.75)
    {

        if(deviceOrientation != UIInterfaceOrientationLandscapeRight)
        {
            deviceOrientation = UIInterfaceOrientationLandscapeRight;
            self.updatingIsEnabled =YES;
        }

    }
    else if(self.angle >= 0.75 && self.angle <= 2.25)
    {
        if(deviceOrientation != UIInterfaceOrientationPortraitUpsideDown)
        {
            deviceOrientation = UIInterfaceOrientationPortraitUpsideDown;
            self.updatingIsEnabled =YES;
            self.foamView.center = CGPointMake(center.x,center.y);
        }
    }
    else if(self.angle <= -2.25 || self.angle >= 2.25)
    {
        if(deviceOrientation != UIInterfaceOrientationLandscapeLeft)
        {
            deviceOrientation = UIInterfaceOrientationLandscapeLeft;
            self.updatingIsEnabled =YES;
            self.foamView.center = CGPointMake(center.x,center.y);

        }
    }
}

Ответы [ 2 ]

2 голосов
/ 07 июня 2009

В этом примере кода, предоставленном Apple, они используют акселерометр для регулировки ориентации изображения в центре экрана. Надеюсь, этот пример кода поможет вам найти то, что вам нужно. (Вам понадобится доступ к сайту разработчика Apple, чтобы загрузить этот пример кода)

Образец oalTouch

Cheers-

0 голосов
/ 09 июня 2009

Вы также можете использовать комбинацию CGAffineTransforms на самом представлении. Эти матрицы действуют для преобразования вида путем поворота или перемещения. Вы можете даже оживить процесс, если хотите. Если это то, что вы на самом деле пытаетесь сделать, я могу предоставить пример кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...