我在单屏(控制器)上实现
public override void WillAnimateRotation (UIInterfaceOrientation toInterfaceOrientation, double duration)
{
base.WillAnimateRotation (toInterfaceOrientation, duration);
positionUIWidgets ();
}
这很好用。但是如果我旋转并返回上一个屏幕(我有一个导航控制器),前一个屏幕将不会改变其布局以适应方向。似乎我需要手动调用我的“positionUIWidgets()”,我不知道该怎么做,我想知道是否有一个正确的方法来做它像“WillAnimateRotation”钩子函数或类似的东西。谢谢!
答案 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 );
}