2010-07-12 2 views
4

Я бы хотел, чтобы ориентация вращалась в соответствии с вызовом shouldAutorotateToInterfaceOrientation для моего контроллера представления. Тем не менее, я бы хотел, чтобы это было сделано немедленно и пропустили вращающуюся анимацию (ту, которая приводит к тому, что углы показывают черную вращающуюся анимацию, когда весь вид вращается.Есть ли способ пропустить анимацию вращения из shouldAutorotateToInterfaceOrientation?

Кто-нибудь знает, есть ли способ указать, что вы хотите, чтобы это произошло немедленно (без анимации)?

ответ

2

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

- (void)viewDidLoad { 
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) 
      name:UIDeviceOrientationDidChangeNotification object:nil]; 
//Whenever the device orientation changes, orientationChanged will be called 

} 


- (void)orientationChanged:(NSNotification *)notification 
{ 
UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation; 
//Based upon which orientation the device is in, update your View rotations. 
//A simple view.transform = CGAffineTransformMakeRotation(whatever); will work well. 
} 

Я считаю, вы должны удалить shouldAutoRotateToInterfaceO rientation: функция вообще. Вы также должны позвонить [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];, когда ваш вид выгружается.

0

Не требуется ручное вращение. Существует способ только отключить вращение анимация.

Ответьте, пожалуйста, как это сделать: https://stackoverflow.com/a/6589568/894671