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

Iphone 当iOS设备旋转时,如何仅更改一个元素的方向?,iphone,ios5,Iphone,Ios5,我希望能够处理当前iPhone应用程序中的方向更改。问题是我不希望控制器的视图旋转或调整大小。当设备方向改变时,我只希望一个UI元素在屏幕上旋转90度 苹果的摄像头应用程序就是一个完美的例子——当设备方向改变时,所有按钮都会旋转,但视图本身不会旋转 我想我可以调整视图的大小,移动所有元素,然后设置按钮的动画,但我觉得一定有更简单的方法 提前感谢。您可以使用 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrienta

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

苹果的摄像头应用程序就是一个完美的例子——当设备方向改变时,所有按钮都会旋转,但视图本身不会旋转

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

提前感谢。

您可以使用

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

    else
    {    
          //Change frames as per orientations
    }


    return NO;
    }
并根据方向手动设置要更改的UI元素的框架。 您可以从的
常量
部分访问所有方向

编辑: 您可以使用NSNotification处理问题。

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

userInfo字典包含一个NSNumber对象,该对象封装 UIInterfaceOrientation值(请参见UIInterfaceOrientation)。使用 UIApplicationStatusBaroOrientationUserInfo键以访问此值 可用性

Available in iOS 2.0 and later.
在UIApplication.h中声明

1) 您可以创建两个视图层次结构,并在
willRotateToInterfaceOrientation:

2) 或者你可以自己处理所有旋转

这是一个好主意-这是我首先尝试的。问题是:假设设备在UIInterfaceOrientationGrait中启动。如果用户将设备转到UIInterfaceOrientation和ScapeLeft,我可以检测到该更改,然后更改帧。如果用户随后旋转回UIInterfaceOrientationGrait,则不会调用此方法。有趣的是,根据我的经验,每次旋转(true)都会调用此例程。我应该澄清:在我之前的评论中,-shouldAutorotateToInterfaceOrientation不会被调用,因为设备方向从未实际更改。因此,手机认为它是纵向的,当设备变回纵向时不会调用此方法。这有道理吗?我完全同意你的看法。建议另一种方法,请检查编辑。不幸的是,它没有。为什么实际的设备方向从未改变,但不知怎么又变回了纵向?从那以后呢?选择2是完美的。谢谢你给我指明了正确的方向。不知什么原因,我很难找到那个。我感谢你的帖子和示例代码。太棒了@我对引用的答案进行了编辑,因为它错误地处理了UIDeviceOrientation的一些值