interfaceOrientation完全搞砸了

时间:2011-08-12 17:43:59

标签: ios uiinterfaceorientation landscape-portrait

正如主题所述,这里真的很奇怪;) 我正在使用xcode 4.02,iOS 4.3.4

我有一个ViewController,在xib中有两个视图。 ViewController标头包含:

IBOutlet UIView* ViewPortrait;
IBOutlet UIView* ViewLandscape;

根据其方向从文件所有者连接到xib中的两个视图。通用视图与其中一个视图(纵向)相关联。

在viewDidLoad上我设置了

self.view = ViewPortrait;

所以,一般来说,我的问题是,当我使用

时,更改的“动画”并不总是有效(只是前两次)
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    if ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (interfaceOrientation == UIInterfaceOrientationLandscapeRight)) {
        self.view = ViewLandscape;
    } else {
        self.view = ViewPortrait;
    }
    return YES;
}

但方向设置正确。当我在ADDITION(!)中使用它时:

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    [UIView animateWithDuration:duration
                     animations:^{
                         if(UIInterfaceOrientationIsLandscape(toInterfaceOrientation))
                         {                       
                             self.view = SpeechToTextLandscape;                                     
                         }
                         else
                         {
                             self.view = SpeechToTextPortrait;
                         }

                     }];
}

动画效果接近完美,除了一种现象:如果我顺时针旋转iphone x次,一切正常,第一次逆时针旋转视图本身正在改变而没有任何效果,但框架(特别是状态栏)像往常一样用动画旋转。同样,当我逆时针旋转iphone x次时,顺时针旋转第一次。在改变方向后(除了上面提到的那个),所有在同一方向上的循环旋转都按预期动画。

如果我顺时针/逆时针旋转(左,右,左,右等),我总会有这种奇怪的效果:视图本身立即被交换,状态栏的“框架”在大约一秒钟内被动画化。

所以,我非常困惑,因为我在这里有小样本应用程序,完全正确的动画交换视图,只有来自shouldAutorotateToInterfaceOrientation的代码(但我知道,它应该在willAnimateRotationToInterfaceOrientation中完成)。

无论如何,欢迎所有的想法和建议!

最好的问候, 麦

0 个答案:

没有答案