5

如果我在方向更改期间更改UICollectionViewEXC_BAD_ACCESS的布局,我会在几次旋转后得到。

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    UICollectionViewLayout *layout = [[UICollectionViewFlowLayout alloc] init];
    self.myCollectionView.collectionViewLayout = layout; // This causes EXC_BAD_ACCESS after a few rotations
}

这是一个UICollectionView错误吗?还是我做错了什么?如果这是一个错误,有没有办法在方向改变期间改变整个布局?

我注意到这个答案中提到了同样的问题。使用 NSZombies 进行调试不会产生额外的信息。

4

1 回答 1

1

不太确定它有什么事情要做,但iOS 6 的发行说明说:

willRotateToInterfaceOrientation:duration:willAnimateRotationToInterfaceOrientation:duration:didRotateFromInterfaceOrientation:方法不再在任何对其自身进行全屏演示的视图控制器上调用——例如,presentViewController:animated:completion:

您应该确保您的应用程序没有使用这些方法来管理任何子视图的布局。相反,他们应该使用视图控制器的viewWillLayoutSubviews方法并使用视图的边界矩形调整布局。

由于您正在使用UICollectionView ,因此您正在使用此方法来更改其布局。

于 2012-11-01T17:16:19.167 回答