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