2014-09-05 2 views
0

Я реализованного на одном экране (контроллер)вращение ручки при навигации назад к предыдущему экрану

public override void WillAnimateRotation (UIInterfaceOrientation toInterfaceOrientation, double duration) 
{ 
    base.WillAnimateRotation (toInterfaceOrientation, duration); 
    positionUIWidgets(); 
} 

Это работает нормально. Но если я повернусь и вернусь к предыдущему экрану (у меня есть контроллер навигации), предыдущий экран не изменит свой макет, чтобы он соответствовал ориентации. Кажется, что мне нужно вручную вызывать мои «positionUIWidgets()», и я не знаю, как это сделать, и я задаюсь вопросом, есть ли способ сделать это как функция «WillAnimateRotation» или что-то в этом роде. Благодаря!

ответ

0

Если я ошибаюсь (и я очень хотел бы быть в этом случае), вы не можете вручную определять изменение ориентации для одного контроллера с iOS 6.0.

Вместо этого вы должны предоставить методы, которые можно запросить и вернуть поддерживаемые режимы ориентации. https://developer.apple.com/library/ios/featuredarticles/viewcontrollerpgforiphoneos/RespondingtoDeviceOrientationChanges/RespondingtoDeviceOrientationChanges.html

0

попробуйте этот.

#import <objc/message.h> 

if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) { 
objc_msgSend([UIDevice currentDevice], @selector(setOrientation:), UIInterfaceOrientationPortrait); 
} 
+0

Можете ли вы добавить описание, почему это работает, а не просто сбросить бит-код? –

+0

Я не понимаю код. Не могли бы вы немного объяснить? Куда идет этот код и что он делает? – Hao

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