2013-08-26 3 views
0

Я разрабатываю приложение iOS, в котором мне нужно повернуть 6 UIView, чтобы они всегда «смотрели» на пользователя. Остальную часть интерфейса не нужно поворачивать.Проблема вращения по горизонтальному углу

Приведенный ниже код работает в Simulator. Однако, когда я тестировал на своем телефоне, я столкнулся с проблемой. Всякий раз, когда я помещаю телефон в плоский исходный/горизонтальный, он понимает, что он должен вернуться к портрету. Любая идея, что это происходит, и работа вокруг?

#pragma mark Rotation 
- (BOOL)shouldAutorotate 
{ 
    return NO; 
} 

- (void)orientationChanged:(NSNotification *)notification 
{ 
    CGFloat rotationAngle = [self convertOrientationToRadians]; 

    [UIView animateWithDuration:0.5 animations:^{ 
     for (TimerButton *timerButton in self.timerButtons) { 
      timerButton.button.transform = CGAffineTransformMakeRotation(rotationAngle); 
     } 
    }]; 
} 

- (CGFloat)convertOrientationToRadians 
{ 
    UIDeviceOrientation orientation = [UIDevice currentDevice].orientation; 

    CGFloat rotationAngle = 0.0; 

    switch (orientation) { 
     case UIDeviceOrientationPortrait: 
      rotationAngle = 0.0; 
      break; 
     case UIDeviceOrientationLandscapeLeft: 
      rotationAngle = M_PI/2; 
      break; 
     case UIDeviceOrientationPortraitUpsideDown: 
      rotationAngle = M_PI; 
      break; 
     case UIDeviceOrientationLandscapeRight: 
      rotationAngle = - M_PI/2; 
      break; 
     default: 
      break; 
    } 

    return rotationAngle; 
} 

ответ

2

Ваше значение по умолчанию для угла поворота равен 0, а в случае UIDeviceOrientationFaceUp явным образом не обрабатываются.

В альтернативном варианте вы можете позвонить по телефону: [[UIApplication sharedApplication] statusBarOrientation], а не [UIDevice currentDevice].orientation.

+0

Я не думаю, что могу использовать [[UIApplication sharedApplication] statusBarOrientation], потому что i set - (BOOL) shouldAutorotate { return NO; } но я добавил условие для UIDeviceOrientationFaceUp для возврата -1, и я просто проверяю, равен ли он -1 перед вращением просмотров! благодаря – Marcelo

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