2012-06-06 82 views
1

我遇到问题,我的应用程序最初加载时的方向不是UIDeviceOrientationPortrait,而是未正确加载。我支持所有的方向,并在初始加载后,我可以适当地旋转到任何方向。初始加载时旋转

它也可以关闭并重新打开任何方向的应用程序。它似乎只是导致问题的初始加载。关于可能发生什么的任何想法?

我甚至不知道要发布什么代码来尝试演示此问题。谢谢!

回答

0

事实证明,问题是由于有一个“容器”视图控制器,然后屏幕上的其他视图控制器没有占用整个屏幕。当加载我的模式视图时,我是从一个较小的视图控制器,而不是容器。将模态视图演示文稿移动到容器中解决了问题。感谢让我以正确的方向思考。

1

有两种可能性:

1.)您在第一个视图中设置了错误。没有代码,我无法帮助你。

2.)您根据您的UIWindow下注您的轮换。我知道这个问题很好,因为UIWindow没有办法处理方向。我认为UISplitView做你上面提到的,但不要抱着我。在UIWindow的基础上解决了很多问题,比如上面的问题或viewControllers之间的手动转换。到目前为止,除了解决方法之外,没有适当的解决方法。

简而言之,只需对设备方向(不是状态栏)进行快速检查,并将视图旋转到viewWillAppear或类似的正确方向。它不应该很难,因为你已经准备好了所有的轮换代码。

如果您想要真的很懒,只需在您的ViewWillAppear中输入[self willAnimateRotationToInterfaceOrientation:[[UIDevice currentDevice] orientation] duration:0.3]];即可。理论上,它应该诀窍。

另请参阅:https://stackoverflow.com/a/3897243/581194了解更多获取方向的方法。如果上述不起作用。

+0

我觉得你用1)击中头部)。我正在使用[PSStackViewController](https://github.com/steipete/PSStackedView)和我的初始视图(如果用户没有登录)是一个模态视图来呈现登录屏幕。对于已登录的用户(没有看到模式视图的用户),加载工作正常,但是如果他们没有登录或者他们点击了注销按钮,就会出现上述问题。 –

+0

Ahh有一个缺失的信息“为登录用户加载正常工作”很高兴,你解决了它。 – Byte

1

试试这个,

在初始加载viewDidLoad将被调用,所以叫从您的定位方法 viewDidLoad

代码:

[self Methodname:[UIApplication sharedApplication].statusBarOrientation];

1

尽快尝试调用此可能的:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];