iPhone:屏幕旋转,然后应用程序崩溃

问题描述:

我想在定位时获得即时屏幕的旋转。在我的ViewController中有一个UIImage和一个UILabel。我做如下:零应用程序崩溃,转动完成之后iPhone:屏幕旋转,然后应用程序崩溃

[self willRotateToInterfaceOrientation:[self interfaceOrientation] duration:0]; 

随着代码试图设置时间线:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 
} 

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{ 
[self willRotateToInterfaceOrientation:[self interfaceOrientation] duration:0]; 
} 

没有行应用程序不会崩溃。

任何想法我做错了什么?

谢谢。

您正在堆叠许多willRotateToInterfaceOrientation:duration:一个接一个地调用。 Infact第一次调用该方法时,它会再次调用它,并再次,直到崩溃。 放置持续时间:0意味着什么都没有,事实上,用于旋转效果的CoreAnimation定时运行在独立的线程上,而不是运行循环中的线程,因此您无法以这种方式停止堆叠调用。 旋转之后应用程序崩溃的原因可能是由于这样的事实,即当堆栈被填充时,动画已经开始(单独的线程)。

通过简单地禁用UIDeviceOrientationDidChangeNotification通知的自动注视和观察,即可获得即时定位,然后应用适当的视图转换。

+0

它确实有效。谢谢! – TxabiGG 2011-02-02 15:54:11

你正在创建一个无限循环:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{ 
    [self willRotateToInterfaceOrientation:[self interfaceOrientation] duration:0]; 
    } 

你从自身内部调用同一个功能。你打算做什么?

+0

我想避免屏幕旋转时的动画。所以我试图将持续时间设置为0.但是,正如你指出它是一个无限循环,是否有任何方式,所以调用willRotateToInterfaceOrientation方法的持续时间= 0? – TxabiGG 2011-02-02 14:51:37