【问题标题】:Change background image when app rotates应用旋转时更改背景图片
【发布时间】:2011-04-20 21:41:43
【问题描述】:

我正在制作一个通用应用程序,但只支持 iPad 上的旋转,所以就这样吧:

我有一个以图像为背景的视图。当用户旋转 iPad 时,我会在 willRotateToInterfaceOrientation 中淡出此纵向图像,并用 didRotateFromInterfaceOrientation 中的横向图像替换该图像,这很好用! (如果有更好的方法我想听他们的话,但这个问题不是关于这个的)。

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

谁能帮帮我。感谢您的宝贵时间。

【问题讨论】:

  • 您可以在 viewWillDisappear: 中保存设备方向(查看 UIDevice 文档)并在 viewWillAppear: 方法中进行检查,必要时调用动画。
  • @Marcelo 是的,这是可能的。
  • @Marcelo 嗨,我确实实现了你所说的,我认为这是一种很好且简单的方法。谢谢你。我认为您应该将评论移至答案,以便我接受:)

标签: iphone


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    假设您使用的是 UINavigationController(因为您提到了推送控制器),您可以通过以下方式确定控制器是否位于顶部:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-10
        • 2012-10-16
        相关资源
        最近更新 更多