перевод после поворота просмотра с использованием CGAffine - PullRequest
2 голосов
/ 01 декабря 2010

У меня есть представление, содержащее текстовое поле. Я установил ориентацию вида следующим образом

(void)deviceRotated:(id)sender
{
    UIDeviceOrientation orientation = [[UIDevice currentDevice]orientation];

    if (orientation == UIDeviceOrientationPortrait)
    {
        CGAffineTransform affine = CGAffineTransformMakeRotation (0.0);
        [self.View setTransform:affine];
    }

    if (orientation == UIDeviceOrientationPortraitUpsideDown)
    {
        CGAffineTransform affine = CGAffineTransformMakeRotation (M_PI * 180 / 180.0f);
        [self.View setTransform:affine];
    }
    else if (orientation == UIDeviceOrientationLandscapeLeft)
    {
        CGAffineTransform affine = CGAffineTransformMakeRotation (M_PI * 90 / 180.0f);  
        [self.View setTransform:affine];
    }
    else if (orientation == UIDeviceOrientationLandscapeRight)
    {
        CGAffineTransform affine = CGAffineTransformMakeRotation ( M_PI * 270 / 180.0f);
        [self.View setTransform:affine]; 
    }
}

Моя проблема в том, что я хочу, чтобы этот вид перемещался вверх при появлении клавиатуры, поскольку некоторые текстовые поля скрыты клавиатурой. Я думаю, что я должен использовать CGAffineTransformMakeTranslation, но я не знаю, как использовать его после этого вращения.

Может кто-нибудь помочь мне решить эту проблему?

Ответы [ 2 ]

8 голосов
/ 01 декабря 2010

мы можем использовать CGAffineTransformConcat.Вот код, который я сделал, чтобы решить эту проблему

CGAffineTransform rotate = CGAffineTransformMakeRotation (0.0);
CGAffineTransform translate = CGAffineTransformMakeTranslation(-5, -150);
self.alertView.transform = CGAffineTransformConcat(translate, rotate);

, но я до сих пор не понимаю, почему перевод в книжной ориентации && книжная ориентация вверх ногами должен использовать разные точки x и y.Это случается и в альбомной ориентации слева и в альбомной ориентации

0 голосов
/ 28 декабря 2015

Вот как повернуть вправо

CGAffineTransform translate = CGAffineTransformMakeRotation(M_PI/18);
view.transform = CGAffineTransformConcat(view.transform, translate);

Поворот влево:

CGAffineTransform translate = CGAffineTransformMakeRotation(-M_PI/18);
view.transform = CGAffineTransformConcat(view.transform, translate);
...