如何设置第二个 UIWindow 的方向

mat*_*ace 5 objective-c uiwindow ios

我的主 ViewController viewDidLoad 函数中有以下代码

window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];


nav = [[NavWithAutoRotateViewController alloc] initWithRootViewController:self];

[window addSubview:[nav view]];
[window makeKeyAndVisible];


[[self navigationController] setNavigationBarHidden:YES];
Run Code Online (Sandbox Code Playgroud)

我的 ipad 应用程序当前设置为仅在横向模式下工作,我正在使用这个新窗口来显示快速查看文档并允许导航栏提供后退按钮和文档的保存选项。主要问题是新的 UIWindow 方向与我的主要应用程序 UIWindow 不匹配。

我上面有一个自定义的 UINavigationController,名为 NavWithAutoRotateController,这是该控制器的代码。

-(id)init
{
    if(self)
    {
//        _supportedInterfaceOrientatoin = UIInterfaceOrientationMaskLandscape;
//        _orientation = UIInterfaceOrientationLandscapeLeft;
    }


    return self;
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (BOOL)shouldAutorotate
{
    return YES;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    return YES;
}

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscapeLeft;
}


// Tell the system which initial orientation we want to have
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationMaskLandscape;
}
Run Code Online (Sandbox Code Playgroud)

Ash*_*hok 0

注册状态栏框架更改通知,该通知仅在方向更改时调用(据我所知),然后定义新窗口的方向。

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(appWillChangeStatusBarFrameNotification:)
                                             name:UIApplicationWillChangeStatusBarFrameNotification
                                           object:nil];
Run Code Online (Sandbox Code Playgroud)

  • 如果加载此视图时方向已经是横向并且以纵向加载怎么办? (5认同)