5

我希望能够在我当前的 iPhone 应用程序中处理方向变化。问题是我不希望我的控制器的视图旋转或调整大小。当设备方向改变时,我只想让一个 UI 元素在屏幕上旋转 90 度。

Apple 的相机应用程序就是一个很好的例子——当设备方向改变时,所有的按钮都会旋转,但视图本身不会旋转。

我想我可以调整视图的大小,移动所有元素,然后为按钮设置动画,但我觉得必须有一种更简单的方法来做到这一点。

提前致谢。

4

2 回答 2

5

1)您可以创建 2 个视图层次结构并更改屏幕上的willRotateToInterfaceOrientation: 查看此问题

2)或者你可以自己处理所有的旋转 看到这个问题

于 2012-06-04T14:11:10.743 回答
2

您可以使用

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    {
if(interfaceOrientation==UIInterfaceOrientationPortrait || interfaceOrientation==UIInterfaceOrientationPortraitUpsideDown)
    {
        //Change frames as per orientations
    }

    else
    {    
          //Change frames as per orientations
    }


    return NO;
    }

并根据方向手动设置要更改的 UI 元素的框架。您可以从此文档Constants的部分访问所有方向。

编辑:您可以使用 NSNotification 来解决这个问题。

UIApplicationDidChangeStatusBarOrientationNotification

当应用程序用户界面的方向改变时发布。

userInfo 字典包含一个封装 UIInterfaceOrientation 值的 NSNumber 对象(请参阅 UIInterfaceOrientation)。使用 UIApplicationStatusBarOrientationUserInfoKey 来访问这个值

Available in iOS 2.0 and later.

在 UIApplication.h 中声明

于 2012-06-04T13:40:52.800 回答