如何在横向模式下转换导航栏和导航控制器

时间:2009-03-02 05:55:16

标签: iphone objective-c cocoa-touch

我正在开发一款游戏,我正在使用横​​向模式,我有4个视图。 2个视图正在以横向模式进入。但在第三个视图中我有UITable和导航栏。我可以在横向模式下旋转表,但无法转换导航栏和导航控制器。导航栏和导航控制器上也有Button。它也没有变形。所以任何人都可以解决这个问题。 :)

3 个答案:

答案 0 :(得分:7)

#define degreesToRadians(x) (M_PI * x / 180.0)

- (void)viewWillAppear:(BOOL)animated
{

    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];

    CGRect newBounds = CGRectMake(0, 0, 480, 320);
    self.navigationController.view.bounds = newBounds;
    self.navigationController.view.center = CGPointMake(newBounds.size.height / 2.0, newBounds.size.width / 2.0);

    self.navigationController.view.transform = CGAffineTransformMakeRotation(degreesToRadians(90));

    [super viewWillAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
    self.navigationController.view.transform = CGAffineTransformIdentity;
    self.navigationController.view.transform = CGAffineTransformMakeRotation(degreesToRadians(0));
    self.navigationController.view.bounds = CGRectMake(0.0, 0.0, 320.0, 480.0);

    [super viewWillDisappear:animated];
}

答案 1 :(得分:2)

通过旋转90度旋转nagvigation控制器的导航栏。 此外,您可能需要设置导航栏中心和框架以设置适当的宽度以适应横向模式..这对我有用:) 希望它也能帮到你。

答案 2 :(得分:1)

在UIViewController文档的Class:

处理轮换

interfaceOrientation属性
- shouldAutorotateToInterfaceOrientation:
- rotatingFooterView
- rotatingHeaderView
- willRotateToInterfaceOrientation:duration:
- willAnimateFirstHalfOfRotationToInterfaceOrientation:duration:
- willAnimateSecondHalfOfRotationFromInterfaceOrientation:duration:
- didRotateFromInterfaceOrientation:

希望这对你也有帮助。

一个。