正如主题所述,这里真的很奇怪;) 我正在使用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中完成)。
无论如何,欢迎所有的想法和建议!
最好的问候, 麦