iPhone / iPad App定位

时间:2012-09-22 02:14:27

标签: iphone xcode orientation

我的应用的iPhone版本支持UIDeviceOrientationPortraitUpsideDownUIDeviceOrientationPortrait,但iPad版本支持所有方向。

在我的视图控制器中,我有这个:

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

我的Info.plist文件包含:

enter image description here

问题在于,当我将应用程序构建到iPod时,应用程序不会颠倒过来。 iPad将支持所有方向。

我已尝试将shouldAutorotateToInterfaceOrientation全部删除,我尝试过此代码:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation = UIDeviceOrientationLandscapeLeft) && (interfaceOrientation = UIDeviceOrientationLandscapeRight) && (interfaceOrientation = UIDeviceOrientationPortraitUpsideDown) && (interfaceOrientation = UIDeviceOrientationPortrait);
}

但由于某种原因,颠倒只是行不通!还有其他解决方案吗?

编辑:使用Xcode 4.5 iOS6

4 个答案:

答案 0 :(得分:3)

想出来,iOS6 SDK使用shouldAutorotate所以这是我的新代码:

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

-(BOOL)shouldAutorotate {
     return YES;
}

-(NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskAll;
}

答案 1 :(得分:0)

如果我理解正确,您希望iPad支持所有方向,同时您希望iPhone支持上下颠倒和纵向旋转。试试这个解决方案。 (这比你上面做的更简单)

   -(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
          return YES;
     }

    else {
            return UIInterfaceOrientationIsPortrait(interfaceOrientation);
        }
 }

我还想补充一点,你必须将它添加到每个单独的视图控制器中,以便它也可以旋转到另一个视图。

例如,假设我有viewcontroller_1和viewcontroller_2,我必须进入控制器的两个.m文件并添加以下代码。如果你不这样做,它可能不会旋转其中一个视图。

答案 2 :(得分:0)

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

IOS 6中的此方法已弃用,因此您可以使用以下方法代替它。

-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAll;
}

根据你的回归方向。

答案 3 :(得分:0)

支持方向的另一种方法是继承UINavigationController并在那里添加方向代码

//IOS 5
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
    return YES;
}
//IOS 6
- (BOOL)shouldAutorotate {
    return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskAll;
}

这对我有用,使用故事板