5

向きの変更中にUICollectionViewのレイアウトを変更するとEXC_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 に答える