2010-07-02 1 views
9

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

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

Любые мысли? Благодарю.

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

ответ

26

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

предотвратить UIView от вращающихся

предотвратить UITableView фон от вращающихся

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

stop a UITableView background rotation


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

- (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; 
     } 
    } 
+0

проверить и найти, что UIInterfaceOrientationPortraitUpsideDown не stuckview работает в ИОС 6. –

+0

является CALayer или UIView? –

+0

@AdamWaite - UIView, как указано по названию и описанию! ;-) – nekno

4

Действительно ли ваш код выполнен? (Есть ли у вас реализовать shouldAutorotateToInterfaceOrientation:?)

stuckview.transform = CGAffineTransformMakeRotation(M_PI_2); 

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^