7

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

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

内部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);
    }
}
4

2 回答 2

7

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

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

于 2011-08-15T19:39:17.090 回答
0

在你的 rootViewController 上确保你实现了这个方法:

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

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

于 2011-08-15T19:54:20.837 回答