Objective c &引用;“自我界面定向”;在iOS 5中没有更新

Objective c &引用;“自我界面定向”;在iOS 5中没有更新,objective-c,ios,ipad,ios5,Objective C,Ios,Ipad,Ios5,我最近将我的iPad升级到了iOS5,发现了一个相当奇怪的问题。在我的应用程序中,两个方向都有两种不同的布局。我正在通过引用self.interfaceOrientation更新didRotateFromInterfaceOrientation方法中的视图。但是现在,self.interfaceOrientation没有更新,视图显示得很奇怪。谁能解释一下这个问题吗。iOS 5有什么新东西给我带来了麻烦吗 我不知道iOS 5有什么变化,但这是我从iOS 4开始使用的代码,从那以后一直运行良好 -

我最近将我的iPad升级到了iOS5,发现了一个相当奇怪的问题。在我的应用程序中,两个方向都有两种不同的布局。我正在通过引用
self.interfaceOrientation
更新
didRotateFromInterfaceOrientation
方法中的视图。但是现在,
self.interfaceOrientation
没有更新,视图显示得很奇怪。谁能解释一下这个问题吗。iOS 5有什么新东西给我带来了麻烦吗

我不知道iOS 5有什么变化,但这是我从iOS 4开始使用的代码,从那以后一直运行良好

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
    switch (toInterfaceOrientation){

       case UIInterfaceOrientationPortrait:
       case UIInterfaceOrientationPortraitUpsideDown:

       //change layout to Portrait 

       return YES;

       case UIInterfaceOrientationLandscapeLeft:
       case UIInterfaceOrientationLandscapeRight:

       //change layout to Landscape 

        return YES;

        default:
            return NO;
    }
}
你可以用

- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

并将方向设置为变量,但这不是一个好的解决方案。

我认为这里的问题是您实际获取设备方向的方式。根据我的经验,界面定向并不总是可靠的

有几种方法可以获取当前的
UIInterfaceOrientation
,但据我所知,从状态栏获取方向是唯一相对有效的方法,因此请尝试使用以下方法:

[UIApplication sharedApplication].statusBarOrientation

提醒-
UIInterfaceOrientation
UIDeviceOrientation
不一样!它们也可能在不同的时间更新,具体取决于您如何初始化它们


您也可以查看类似的问题。

这并不能回答allI的问题。我提供了一种在方向改变时实现其布局的替代方法。这个替代方法解决了问题中描述的bug;您建议将布局更改插入注释所在的位置。我误解了。不过,这仍然是个坏主意<代码>-shouldAutorotateToInterfaceOrientation:可以在不进行旋转的情况下调用;如果您将控制器放在导航控制器中,它将快速连续调用此方法4次并缓存返回值。我认为他可能无意中使用了
UIInterfaceOrientationTask
,这是行不通的-