iOS应用程序 - 如何使主窗口旋转

时间:2011-08-15 18:56:26

标签: iphone ios rotation mainwindow

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

编辑: 据我所知,当他指出我必须在这种情况下手动旋转背景图像时,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);
    }
}

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:0)

在rootViewController上确保实现此方法:

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

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