Установка преобразования вращения в UIView или его слой не работает? - PullRequest
9 голосов
/ 03 июля 2010

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

Проблема в том, что все вращается в любом случае, ипреобразование, похоже, ничего не делает.Я попытался с помощью аффинного преобразования на виде и с помощью 3D-преобразования на слое (ниже).Метод вызывается, но я никогда не вижу визуальной разницы.

Есть мысли?Спасибо.

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
{
    CALayer *layer = stuckview.layer;
    layer.transform = CATransform3DMakeRotation(90, 0, 0, 1);
}    

Ответы [ 2 ]

26 голосов
/ 13 марта 2011

Чтобы помочь другим найти это, я добавляю пару поисковых фраз, таких как:

предотвращение вращения UIView

предотвращение вращения фона UITableView

остановить вращение UIView

остановить поворот фона UITableView


Полный образец для любой ориентации:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
    {
        switch (toInterfaceOrientation) {
            case UIInterfaceOrientationLandscapeLeft:
                stuckview.transform = CGAffineTransformMakeRotation(M_PI_2); // 90 degress
                break;
            case UIInterfaceOrientationLandscapeRight:
                stuckview.transform = CGAffineTransformMakeRotation(M_PI + M_PI_2); // 270 degrees
                break;
            case UIInterfaceOrientationPortraitUpsideDown:
                stuckview.transform = CGAffineTransformMakeRotation(M_PI); // 180 degrees
                break;
            default:
                stuckview.transform = CGAffineTransformMakeRotation(0.0);
                break;
        }
    }
4 голосов
/ 03 июля 2010

Ваш код действительно выполнен? (Реализуете ли вы долженAutorotateToInterfaceOrientation:?)

stuckview.transform = CGAffineTransformMakeRotation(M_PI_2); 

должен сделать работу.

Примечание: функции принимают радианы, а не градусы.

...