应用程序旋转时更改背景图像

时间:2011-04-20 21:41:43

标签: iphone

我正在制作一款通用应用,但只支持iPad上的旋转,所以在这里:

我有一个图像作为背景。当用户旋转iPad时,我将此肖像图像淡出willRotateToInterfaceOrientation并用didRotateFromInterfaceOrientation中的横向图像替换图像,这非常有用! (如果有更好的方法我想听到它们,但这个问题不是关于这个问题)。

我在这个视图上有一个按钮,它会在堆栈上推送一个新的viewcontroller。此视图控制器也具有与其被推出的视图相同的“功能”。我需要帮助的是:当我从纵向(这是从这个视图被推动的方向)旋转iPad到横向时,这个“第二”视图中的图像按预期改变。然而,当我将这个视图控制器从堆栈中弹出时,“第一”视图仍然显示为肖像而不是横向图像...我理解为什么,但不知道我应该如何解决这个问题。

任何人都可以帮助我。谢谢你的时间。

3 个答案:

答案 0 :(得分:1)

如果控制器不在顶层堆栈上,您可以随时注册UIDeviceOrientationDidChangeNotification并更改图像。

假设您正在使用UINavigationController(因为您提到了推送控制器),您可以确定控制器是否位于顶部:

if ([[self navigationController] topViewController] == self) {
    // do magic
}

答案 1 :(得分:1)

您可以在viewWillDisappear上保存设备方向(查看UIDevice文档):并在viewWillAppear:方法上检查它,必要时调用动画。

(OP告诉我将其作为答案发布)

答案 2 :(得分:0)

使用第一个视图控制器的viewWillAppear方法。在那里,您可以通过调用[[UIDevice currentDevice] orientation]找到设备的方向,并相应地设置背景图像。