Iphone开发:有没有办法在运行时锁定方向?

时间:2011-11-17 13:35:29

标签: ios ios4

我需要一个可以在Portrait和landscape中显示的视图。但是当我加载另一个视图时,我只希望它以横向显示。

我有一个视图控制器A.它可以以纵向和横向显示。此视图控制器由App代表创建。

当我单击视图A上的按钮时,我创建一个视图控制器B,我只想在横向显示。并加载视图,如[A.view addSubView:B.view]。

当我旋转设备时,函数shouldAutorotateToInterfaceOrientation仅在
中被调用 控制器A.无论我如何在控制器B中设置功能,都无法调用。

1 个答案:

答案 0 :(得分:5)

在第一个视图中,请确保

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
    return Yes;
}

在你的第二个视图中将其设置为

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

更新: 好的,试试这个...
在主视图控制器/应用程序委托中,每次设备旋转时都运行shouldAutorotateToInterfaceOrientation,放置一个全局级变量。

之类的东西
.h
@interface NavAppDelegate : NSObject <UIApplicationDelegate> {
    Bool *isMain;
}

.m
-(void)viewDidLoad {
    isMain = Yes;
}
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
    if (isMain) {
        return Yes;
    } else {
        return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
    }
}
// This bit is where you'll have to adapt it to how you change your views
// but it's a basic idea.
-(void)bitThatDoesTheViewChange:(viewController *) controller {
   isMain = No;

   *viewController = controller;

   [viewController release];

   isMain = Yes;
}