【问题标题】:iOS 8 screen rotation messes up viewiOS 8 屏幕旋转扰乱了视图
【发布时间】:2015-03-26 22:31:08
【问题描述】:

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

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

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

【问题讨论】:

  • iOS7 上能用吗?
  • 看看这个,如果这是你的问题,因为它会影响 iOS8 上的旋转:stackoverflow.com/questions/28443852/…
  • 是的@RoryMcKinnel,这似乎是解决办法。删除该行不会在任何 iOS 版本上导致任何其他问题,这是肯定的吗?此应用需要在 iOS7 和 8 上运行。
  • 一切都会好的。这是使用 xcode pre xcode6 构建的遗留问题,不再需要。可耻的是,Apple 没有想到至少要发出警告。我把我的拿出来了,到目前为止在 iOS7 和 8 中一切都很好。

标签: ios objective-c ios8 orientation screen-orientation


【解决方案1】:

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

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

【讨论】:

  • 评论该行似乎有效。但它会导致 iOS 7 出现问题或整个应用程序出现任何其他问题吗?
【解决方案2】:

请试试这个。

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

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

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

- (BOOL)shouldAutorotate {
    return NO;
}

【讨论】:

  • 这些似乎都不起作用,可能是因为 iOS 8 现在处理旋转的方式。不过还是谢谢。
猜你喜欢
  • 1970-01-01
  • 2017-07-31
  • 2013-04-11
  • 2012-10-04
  • 1970-01-01
  • 1970-01-01
  • 2015-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多