UIInterfaceOrientation landscape与Xcode 5中的Portrait问题

时间:2013-09-24 17:25:36

标签: iphone ios xcode

我想我几乎每个帖子都关于这个话题。所以,在你阅读之前,不要杀死这个问题。这个问题适用于iOS 7上的XCode 5

我有一个支持横向和纵向模式的应用。在我的项目中,部署信息将检查所有方向。

当应用启动时,我会显示

  • v1ViewController(始终应以横向模式打开)

当用户点击按钮时,它会将他们带到

  • v3ViewController(始终应以纵向模式打开)

我遇到的问题是,当应用程序启动并且我在纵向模式下持有iphone时会显示此信息。

enter image description here

如果我以横向模式切换iphone,则会显示此信息。

enter image description here

如何强制我的v1ViewController始终显示横向模式?

这是我现在的代码。

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

}

但是如果我添加它,那么视图总会像我显示的第一张图片一样打开,旋转也没有效果。

- (BOOL)shouldAutorotate
{

    UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation];

    NSLog(@"interfaceOrientation: %d ...", interfaceOrientation);



    if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft)
    {
        return YES;
    }
    else if (interfaceOrientation == UIInterfaceOrientationLandscapeRight)
    {
        return YES;
    }
    else
    {
        return NO;
    }

}

 - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
 {
    return UIInterfaceOrientationLandscapeLeft;
 }

 -(NSUInteger)supportedInterfaceOrientations
 {
     return UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight;
 }

1 个答案:

答案 0 :(得分:4)

对于任何对我如何工作感兴趣的人,这就是我所做的。

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

-(NSUInteger)supportedInterfaceOrientations
{

    return UIInterfaceOrientationMaskLandscape;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationLandscapeLeft;
}