iOS 8 次屏幕旋转打乱了视图

iOS 8 screen rotation messes up view

我有一个应用程序,除了一个屏幕外,所有屏幕都是纵向的。在 iOS 8 中,一个横向页面显示正常,直到设备向任何方向旋转。视图在一个奇怪的轴上旋转,并且它的一部分离开了屏幕。 我已经尝试在 viewWillTransitionToSize 中更新视图的框架,但这只会导致更多问题,将子视图的框架更改得非常疯狂。 一些解决方案建议这样做:

- (void)applicationDidChangeStatusBarOrientation:(NSNotification *)notification
{
    [UIViewController attemptRotationToDeviceOrientation];
}

但这对我不起作用。有任何想法吗?谢谢!

违规行将在您的 AppDelegate didFinishLaunchingWithOptions 函数中,如下所示:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

请试试这个。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

这将允许左右横向(但自 iOS6 后已弃用)。

或者这个,但我没有测试它。

- (BOOL)shouldAutorotate {
    return NO;
}