【发布时间】:2012-06-08 13:57:22
【问题描述】:
我希望能够在我当前的 iPhone 应用程序中处理方向变化。问题是我不希望我的控制器的视图旋转或调整大小。当设备方向改变时,我只想让一个 UI 元素在屏幕上旋转 90 度。
Apple 的相机应用程序就是一个很好的例子 - 当设备方向改变时,所有按钮都会旋转,但视图本身不会旋转。
我想我可以调整视图大小,移动所有元素,然后为按钮设置动画,但我觉得必须有更简单的方法。
提前致谢。
【问题讨论】:
我希望能够在我当前的 iPhone 应用程序中处理方向变化。问题是我不希望我的控制器的视图旋转或调整大小。当设备方向改变时,我只想让一个 UI 元素在屏幕上旋转 90 度。
Apple 的相机应用程序就是一个很好的例子 - 当设备方向改变时,所有按钮都会旋转,但视图本身不会旋转。
我想我可以调整视图大小,移动所有元素,然后为按钮设置动画,但我觉得必须有更简单的方法。
提前致谢。
【问题讨论】:
1) 您可以创建 2 个视图层次结构并更改屏幕上的 willRotateToInterfaceOrientation:
see this question
2) 或者您可以自己处理所有旋转 see this question
【讨论】:
你可以使用
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if(interfaceOrientation==UIInterfaceOrientationPortrait || interfaceOrientation==UIInterfaceOrientationPortraitUpsideDown)
{
//Change frames as per orientations
}
else
{
//Change frames as per orientations
}
return NO;
}
并根据方向手动设置要更改的 UI 元素的框架。
您可以从this doc 的Constants 部分访问所有方向。
编辑: 你可以使用 NSNotification 来解决这个问题。
UIApplicationDidChangeStatusBarOrientationNotification
当应用程序的用户界面的方向发布 变化。
userInfo 字典包含一个 NSNumber 对象,该对象封装 UIInterfaceOrientation 值(请参阅 UIInterfaceOrientation)。采用 UIApplicationStatusBarOrientationUserInfoKey 来访问这个值 可用性
Available in iOS 2.0 and later.在 UIApplication.h 中声明
【讨论】: