0

我在 UITabbarcontroller 中有一个 UINavigationController。我只想在 UINavigationController 中旋转一个视图控制器。

这是我正在使用的代码片段。

-(NSUInteger)supportedInterfaceOrientations
{
if (CURRENTDEVICE == IPHONE)
    return [self.navigationController supportedInterfaceOrientations] | UIInterfaceOrientationMaskAllButUpsideDown;
else
    return UIInterfaceOrientationMaskAll;
}

-(BOOL)shouldAutorotate {
return YES;
}

我在 UINavigationController 上也有一个类别:

#import "UINavigationController+autorotate.h"

@implementation UINavigationController (autorotate)

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

@end

我不确定如何实现它。

4

2 回答 2

0

你可以用 cgrect 对其进行硬编码。这是指向另一个可能对您有所帮助的问题的链接。有一个很好的例子,可以在其中硬编码两个不同的视图以进行旋转,但我个人不推荐它。无论如何,我认为这可能会为您指明正确的方向。

https://stackoverflow.com/questions/12867792/ios-rotation-causing-views-to-displace-shift-forcing-me-to-use-non-sensical-har

该问题中有一组代码可以帮助您入门。您还可以在右舷(如果您使用情节提要)中选择在 IB 中设置旋转,这更容易。

希望这可以帮助

阿德里安

于 2012-10-13T12:57:50.533 回答
0

在您的supportedInterfaceOrientations实施类别中,您可以检查topViewController. 您可以使用kindOfClass:方法来确定它是哪个类...然后返回与默认导航不同的方向。

您也可以子类UINavigationController化,并以相同的方式进行检查。在 iOS 6 之前,不建议对导航控制器进行子类化,文档仍然声明了这一点,但 Apple 工程师告诉我,使用新的旋转逻辑,您可以将UINavigationController.

于 2012-10-13T13:12:47.500 回答