iPhone SDK:强制应用程序的单个部分的横向模式

时间:2010-01-19 16:50:45

标签: iphone objective-c

另一种横向模式问题。

我们都见过

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:NO];

无意义。我无法在模拟器或设备上使用它。

我得到的是:

http://i47.tinypic.com/zl9egh.png

当我真的想要这个时:

http://i45.tinypic.com/xms6cm.png

正如你可能会说的那样,它正在翻转手机,但它没有意识到它已被翻转。

我见过隐藏的方法

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

但我需要这个应用程序在应用程序商店,我不知道他们是否会打击它。

有没有人知道如何让这个该死的东西挺直自己?

2 个答案:

答案 0 :(得分:2)

理想情况下,您的视图控制器应该实现:

- (BOOL)shouldAutorotateToInterfaceOrientation:
                         (UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft ||
                 interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

然后,该视图控制器唯一允许的方向是横向方向之一。

除非你有一个非常复杂的视图层次结构,它使用了一个标签栏控制器,否则这会导致视图在被推动时旋转。

如果不起作用,您可以尝试:

[[UIDevice currentDevice] performSelector:
                               @selector(setOrientation:) 
                           withObject:(id)UIInterfaceOrientationLandscapeRight];

我在AppStore中有一个使用此代码的应用程序,因为在我的情况下,我确实有一个复杂的视图层次结构,这使得我只需要在工作中保持景观。

答案 1 :(得分:0)

如果要旋转应用程序的单个部分,可以使用UIView的CGAffineTransform转换属性。有关示例,请检查此主题:

How do I apply a perspective transform to a UIView?