当iOS设备旋转时,如何仅更改方向的一个元素?

时间:2012-06-04 13:32:48

标签: iphone ios5

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

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

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

提前致谢。

2 个答案:

答案 0 :(得分:5)

1)您可以创建2个视图层次结构并更改willRotateToInterfaceOrientation:屏幕上的视图层次结构 see this question

2)或者你可以自己处理所有轮换 see this question

答案 1 :(得分:2)

您可以使用

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

    else
    {    
          //Change frames as per orientations
    }


    return NO;
    }

并根据方向手动设置要更改的UI元素的框架。 您可以访问this docConstants部分中的所有方向。

修改: 您可以使用NSNotification来解决此问题。

UIApplicationDidChangeStatusBarOrientationNotification
  

在应用程序的用户界面方向发布   变化。

     

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

Available in iOS 2.0 and later.
     

在UIApplication.h中声明