应用程序在横向模式下启动时 UIOrientation 不起作用

Posted

技术标签:

【中文标题】应用程序在横向模式下启动时 UIOrientation 不起作用【英文标题】:UIOrientation not working when application launch in Landscape mode 【发布时间】:2012-01-10 15:04:46 【问题描述】:

我创建了一个支持所有方向的应用程序。

我还在viewDidLoad 方法中创建了一个表格和搜索栏(不使用xib)。我还编写了以下代码来调整表格视图和搜索栏的位置。

当我在纵向视图中启动我的应用程序时它可以正常工作,当我旋转到横向视图时,它会完美地调整视图。

但是当我在横向模式下启动我的应用程序时,视图没有调整,而是采用纵向视图的定位。但是,当我以纵向旋转然后横向旋转时,它仍然可以正常工作。

另外为了确保捕捉到正确的方向,我在这个方法中写了NSLog,它显示了正确的值。

另外为了确保这个方法(adjustViewsForOrientation)被显式调用,我也在viewDidLoad中调用了这个方法。

[self adjustViewsForOrientation:self.interfaceOrientation];

这里是sn-p的其余代码:

- (void) adjustViewsForOrientation:(UIInterfaceOrientation)orientation 
    if (orientation == UIInterfaceOrientationLandscapeLeft || 
            orientation == UIInterfaceOrientationLandscapeRight) 
        aTableView.frame = CGRectMake(705, 220, 320, 280);
        sBar.frame=CGRectMake(805, 0, 220, 40);
        NSLog(@"inside landscape");        
    
    else if (orientation == UIInterfaceOrientationPortrait || 
                 orientation == UIInterfaceOrientationPortraitUpsideDown) 
        aTableView.frame = CGRectMake(450, 220, 320, 280);
        sBar.frame=CGRectMake(550,3,220,40);
    


- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
                                 duration:(NSTimeInterval)duration 
    // [self adjustViewsForOrientation]
    [self adjustViewsForOrientation:toInterfaceOrientation];
    NSLog(@"landscap");

【问题讨论】:

你能打印出 NSLog(@"To Orientation: %d", toInterfaceOrientation);并向我们​​展示结果? 复制 - ***.com/questions/8775911/… 【参考方案1】:

试试这个方法,它可能会有所帮助。在 viewDidLoad 方法中注册 UIDeviceOrientationDidChange:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(adjustViewsForOrientation:) name:UIDeviceOrientationDidChangeNotification object:nil];

还要改-(void) adjustViewsForOrientation:(UIInterfaceOrientation)orientation

-(void) adjustViewsForOrientation:(NSNotification *)notification

并通过获取方向值来获得新的方向

例如UIDeviceOrientation newDeviceOrientation = [notification orientation];

【讨论】:

以上是关于应用程序在横向模式下启动时 UIOrientation 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在横向模式下显示 android 启动画面?

在拆分视图中,当应用程序以横向模式启动时如何将视图调整到屏幕

横向模式下的 iPhone MPMoviePlayer

在横向模式下飞溅(启动图像)?

横向模式下的启动屏幕

Xcode 5 在横向模式下不会显示 iPhone 的启动图像