Iphone 设备上非常间歇性的定向&;模拟机
我注意到我在我的设备&模拟器上得到了非常断断续续的定向 我有一个模态视图控制器,我现在,这是我的应用程序中唯一的东西,支持旋转 如果我在不移动设备的情况下以纵向方式启动应用程序,打开模式VC,然后旋转设备,它通常会工作。但是,有时如果我打开应用程序,将设备固定在横向位置,然后旋转到纵向位置,启动VC,然后旋转设备,则不会发生旋转。这似乎是断断续续的。有时,如果我在纵向模式下启动应用程序,然后打开VC并旋转设备,什么都不会发生,直到我退出并重新启动它,应用程序中才会出现方向 这很奇怪,因为它有50%的时间是有效的!每当我通过Xcode启动它并在shouldAutorotateToInterfaceOrientation中设置断点时,它总是有效的Iphone 设备上非常间歇性的定向&;模拟机,iphone,uikit,Iphone,Uikit,我注意到我在我的设备&模拟器上得到了非常断断续续的定向 我有一个模态视图控制器,我现在,这是我的应用程序中唯一的东西,支持旋转 如果我在不移动设备的情况下以纵向方式启动应用程序,打开模式VC,然后旋转设备,它通常会工作。但是,有时如果我打开应用程序,将设备固定在横向位置,然后旋转到纵向位置,启动VC,然后旋转设备,则不会发生旋转。这似乎是断断续续的。有时,如果我在纵向模式下启动应用程序,然后打开VC并旋转设备,什么都不会发生,直到我退出并重新启动它,应用程序中才会出现方向 这很奇怪,因为它有50
任何人都有过这样的经历或知道发生了什么吗?即使您尝试在横向环境中启动应用程序,您的手机也会在纵向环境中启动应用程序,然后在横向环境中启动应用程序,具体取决于您的手机所处的位置 我不知道你用什么代码来完成这个任务。下面是一段摘自Apple代码片段的代码。看看这是否有帮助
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)
interfaceOrientation duration:(NSTimeInterval)duration {
if (interfaceOrientation == UIInterfaceOrientationPortrait)
{
self.view = self.portrait;
self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(0));
self.view.bounds = CGRectMake(0.0, 0.0, 300.0, 480.0);
}
else if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft)
{
self.view = self.landscape;
self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(-90));
self.view.bounds = CGRectMake(0.0, 0.0, 460.0, 320.0);
}
else if (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
{
self.view = self.portrait;
self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(180));
self.view.bounds = CGRectMake(0.0, 0.0, 300.0, 480.0);
}
else if (interfaceOrientation == UIInterfaceOrientationLandscapeRight)
{
self.view = self.landscape;
self.view.transform = CGAffineTransformIdentity;
self.view.transform =
CGAffineTransformMakeRotation(degreesToRadian(90));
self.view.bounds = CGRectMake(0.0, 0.0, 460.0, 320.0);
}
}
对于父视图控制器不自动旋转的视图控制器,要使自动旋转正常工作,我也遇到过类似的挑战,尽管我的大部分经验都与争论UINavigationController而不是模态视图控制器有关。尽管如此,我还是建议尝试以下方法:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
当您显示旋转感知视图帮助时?(当您关闭它时,可能会再次关闭它?)
我要寻找的另一件事是对[UIWindow makeKeyWindow]
或[UIResponder becomeFirstResponder]
的可疑调用
我还将注册
UIDeviceOrientationIDChangeNotification
事件,并确保模态视图为您收到的每个事件调用[UIViewController shouldAutorotateToInterfaceOrientation::
。我终于发现了问题所在
事实证明,只有添加到
ui窗口的第一个ui视图
才会被询问是否旋转。任何后续视图都不会收到此消息。我的应用程序使用另一个视图来设置动画,使其远离启动时显示的Default.png
,这是首先添加到窗口的 不知道到底出了什么问题,但我想当UI中发生奇怪的事情时,我会问自己:“你在UIKit中调用主线程之外的任何东西吗?”谢谢你的评论。不,我肯定我没那么做!这一切都非常令人费解。这种行为是只发生在你的应用程序中,还是你在其他应用程序中也看到了它的不当行为?只有这一个应用程序。我已经创建了一个新项目,它在模拟器和设备中都能正常工作。谢谢你的回答。这似乎是在两个单独的纵向和横向视图之间交换的代码。我只是简单地允许一个视图的旋转,在shouldAutorotateToInterfaceOrientation方法中返回YES。是的,我肯定认为发生了一些奇怪的事情。我计划剥离代码,直到它开始工作,并以这种方式剖析它。谢谢你的建议。谢谢你的帮助。我会尝试一下这些建议,然后再给你回复!
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];