处理ios设备方向

我有我的uiviews取决于设备方向的问题…

我遇到的主要问题是

UIDeviceOrientationFaceUp UIDeviceOrientationFaceDown 

正在搞乱我的观点我只想支持肖像和风景(左),所以如果设备改变方向我的观点改变自己正确..

这是我目前实施的。 基本上它是一个从屏幕底部向上滚动的UIView,在这个视图中有几个button,用户可以select加载不同的视图。

 #pragma jumpBarButtons - (void)jumpBarButtonPosition { //orientation stuff if (jumpBar.isViewLoaded) { UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; switch (orientation) { case UIDeviceOrientationPortrait: { NSLog(@"Portrait"); // Row one jumpButton1.frame = CGRectMake(18.45, 23.0, 57.0, 57.0); jumpButton2.frame = CGRectMake(93.9, 23.0, 57.0, 57.0); jumpButton3.frame = CGRectMake(169.35, 23.0, 57.0, 57.0); jumpButton4.frame = CGRectMake(244.8, 23.0, 57.0, 57.0); // Row tow jumpButton5.frame = CGRectMake(18.45, 95.0, 57.0, 57.0); jumpButton6.frame = CGRectMake(93.9, 95.0, 57.0, 57.0); jumpButton7.frame = CGRectMake(169.35, 95.0, 57.0, 57.0); jumpButton8.frame = CGRectMake(244.8, 95.0, 57.0, 57.0); // Row three jumpButton9.frame = CGRectMake(18.45, 167.0, 57.0, 57.0); jumpButton10.frame = CGRectMake(93.9, 167.0, 57.0, 57.0); jumpButton11.frame = CGRectMake(169.35, 167.0, 57.0, 57.0); jumpButton12.frame = CGRectMake(244.8, 167.0, 57.0, 57.0); // Row four jumpButton13.frame = CGRectMake(18.45, 239.0, 57.0, 57.0); jumpButton14.frame = CGRectMake(93.9, 239.0, 57.0, 57.0); jumpButton15.frame = CGRectMake(169.35, 239.0, 57.0, 57.0); jumpButton16.frame = CGRectMake(244.8, 239.0, 57.0, 57.0); } break; case UIDeviceOrientationLandscapeLeft: case UIDeviceOrientationLandscapeRight: { viewSpaceHeight = 207; viewSpaceWidth = 480; // Row one jumpButton1.frame = CGRectMake(19.7, 9.0, 57.0, 57.0); jumpButton2.frame = CGRectMake(96.42, 9.0, 57.0, 57.0); jumpButton3.frame = CGRectMake(173.13, 9.0, 57.0, 57.0); jumpButton4.frame = CGRectMake(249.84, 9.0, 57.0, 57.0); jumpButton5.frame = CGRectMake(326.55, 9.0, 57.0, 57.0); jumpButton6.frame = CGRectMake(403.26, 9.0, 57.0, 57.0); // Row tow jumpButton7.frame = CGRectMake(19.7, 75.0, 57.0, 57.0); jumpButton8.frame = CGRectMake(96.42, 75.0, 57.0, 57.0); jumpButton9.frame = CGRectMake(173.13, 75.0, 57.0, 57.0); jumpButton10.frame = CGRectMake(249.84, 75.0, 57.0, 57.0); jumpButton11.frame = CGRectMake(326.55, 75.0, 57.0, 57.0); jumpButton12.frame = CGRectMake(403.26, 75.0, 57.0, 57.0); // Row three jumpButton13.frame = CGRectMake(19.7, 141.0, 57.0, 57.0); jumpButton14.frame = CGRectMake(96.42, 141.0, 57.0, 57.0); jumpButton15.frame = CGRectMake(173.13, 141.0, 57.0, 57.0); jumpButton16.frame = CGRectMake(249.84, 141.0, 57.0, 57.0); } break; //.. 

这几乎是如果在肖像有16 4,4,4,4个图标,如果风景然后图标是6,6,4。 如果设备翻转面朝上或面朝下,所有这些button的意见消失会发生什么..我能做些什么来阻止这一点,任何帮助将gretly赞赏。

改用UIInterfaceDirection 。 它是UIApplication类的一部分,它只包含下列值

 typedef enum { UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait, UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown, UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight, UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft } UIInterfaceOrientation; 

您可以轻松地检查您的当前方向,如下所示:

 [[UIApplication sharedApplication] statusBarOrientation]