导航回上一屏幕时处理旋转

时间:2014-09-05 06:23:03

标签: ios uinavigationcontroller xamarin

我在单屏(控制器)上实现

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

这很好用。但是如果我旋转并返回上一个屏幕(我有一个导航控制器),前一个屏幕将不会改变其布局以适应方向。似乎我需要手动调用我的“positionUIWidgets()”,我不知道该怎么做,我想知道是否有一个正确的方法来做它像“WillAnimateRotation”钩子函数或类似的东西。谢谢!

2 个答案:

答案 0 :(得分:0)

除非我弄错了(而且我非常喜欢在这种情况下),否则自iOS 6.0以来,您无法再手动指示单个控制器的方向更改。

相反,您必须提供可以查询的方法并返回支持的方向模式。 https://developer.apple.com/library/ios/featuredarticles/viewcontrollerpgforiphoneos/RespondingtoDeviceOrientationChanges/RespondingtoDeviceOrientationChanges.html

答案 1 :(得分:0)

尝试这个。

#import <objc/message.h>

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