【问题标题】:iOS app - how to make main window rotateiOS应用程序-如何使主窗口旋转
【发布时间】:2011-08-15 18:56:25
【问题描述】:

我的主窗口中有一个背景图像,因此当我翻转视图时,它后面不是一个空白的白色屏幕,而是一个图像。我的问题是设备旋转时此图像不旋转。

编辑: 据我所知,Brett 指出在这种情况下我必须手动旋转背景图像是正确的。以防它在将来帮助其他人,这就是我如何旋转它。

内部myAppDelegate

- (void) application:(UIApplication *)application
        willChangeStatusBarOrientation:(UIInterfaceOrientation)newStatusBarOrientation
        duration:(NSTimeInterval)duration
{
    if (newStatusBarOrientation == UIInterfaceOrientationPortrait)
        self.bgImage.transform      = CGAffineTransformIdentity;
    else if (newStatusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)
        self.bgImage.transform      = CGAffineTransformMakeRotation(-M_PI);
    else if (UIInterfaceOrientationIsLandscape(newStatusBarOrientation))
    {
        float rotate    = ((newStatusBarOrientation == UIInterfaceOrientationLandscapeLeft) ? -1:1) * (M_PI / 2.0);
        self.bgImage.transform      = CGAffineTransformMakeRotation(rotate);
        self.bgImage.transform      = CGAffineTransformTranslate(self.bgImage.transform, 0, -self.bgImage.frame.origin.y);
    }
}

【问题讨论】:

  • UIImage 必须在您的 UIView 中。是吗?
  • 哇,真的很想知道它是如何工作的(在翻转时摆脱空白屏幕)。为你点赞!
  • @Peter,所以你是说 UIImageView 不会在主窗口上自动旋转,我必须把它放在 UIView 中并为它声明一个视图控制器?
  • 你甚至不必为它创建一个新的视图控制器。只需确保它在 IB 中的 UIView
  • 它是一个标签栏模板,所以 MainWindow.xib 除了UIWindow 之外没有UIView。这是我放置 UIImageView 的地方。

标签: iphone ios rotation mainwindow


【解决方案1】:

我认为 UIWindow 将旋转事件传递给子控制器。该窗口应包含根视图控制器视图,然后将旋转事件消息传递给视图控制器以管理旋转。

您应该能够在您的应用委托中监听这些事件并手动管理图像旋转。否则,只需将图像添加为根视图控制器的子视图即可。

【讨论】:

  • 我相信你是对的,我必须手动旋转它。谢谢。
【解决方案2】:

确保在您的 rootViewController 上实现此方法:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return YES;
}

您的 rootViewController 可能只是一个带有 2 个 UIViews 的简单 UIVIew,一个用于背景图像视图,另一个用于您的主界面视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多