相关疑难解决方法(0)

UINavigationController和autorotation

我有一个返回一个UIViewController YESshouldAutorotateToInterfaceOrientation:UIDeviceOrientationPortraitNO其他一切.在堆栈顶部的那个视图中,我pushViewController:animated:用来推动一个新的UIViewController.新控制器返回YES任何内容shouldAutorotateToInterfaceOrientation:.

第一个视图拒绝旋转(如预期的那样).按下第二个视图后,用户可以旋转设备,UI将旋转(也如预期).如果第二个视图处于横向模式并且用户按下后退按钮(调用popViewControllerAnimated:),则第一个视图将显示为旋转(意外!).

如果用户将设备旋转回纵向,则视图将旋转,然后像以前一样卡在纵向模式中.这可行,但对于用户来说,它们会旋转回来之前很难看.所以我正在寻找一种让这种观点保持纵向模式的方法.

到目前为止我找到的唯一解决方法是使用-[UIDevice setOrientation:],它会抛出一个警告(orientation只读),但是因为实际定义了它.这是一个巨大的黑客,我想要一个真正的解决方案.为了寻找真正的解决方案,我将GDB附加到了Photos应用程序(MobileSlideshow.app)并发现它也使用了-[UIDevice setOrientation:].作为一个内部应用程序虽然我猜他们有不同的规则.

有没有正确的方法来实现预期的自转行为?

iphone cocoa-touch rotation uinavigationcontroller

24
推荐指数
3
解决办法
2万
查看次数