iPad Air 2 および iPad Mini 4 の分割画面機能を実装しています。分割画面のサイズがいつ変更されるかを検出しようとしています。プライマリ アプリとして実行する場合、 または のいずれかviewWillTransitionToSize
がwillTransitionToTraitCollection
実行されます。アプリがセカンダリ アプリとして実行されている場合、セカンダリ アプリviewWillTransitionToSize
を開くとき、または画面の 1/4 から 1/2 に変化するランドスケープ モードの間に関数が呼び出されます。セカンダリ アプリの使用を画面の 1/2 から 1/4 に変更すると、その変更を示すのに役立つ関数は呼び出されません。呼び出される関数があるはずですか?
1318 次
1 に答える
2
アップデート
UICollectionView を使用している場合は、呼び出される UICollectionViewLayout メソッドに注意を払う必要があります。shouldInvalidateLayoutForBoundsChange:
基本的に、このメソッドは、コレクション ビューの境界 (サイズではない) が変更されるたびに呼び出されます。YES と答えると、コレクション ビューの再レイアウトが行われます。
実験するために、(たとえば、UICollectionViewFlowLayout をサブクラス化することによって) このメソッドを次のようにオーバーライドできます。
- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
{
return YES;
}
それが機能する場合は、実際のサイズが変更されたときにのみ YES を返すより効率的な方法を試すことができます。このようなもの
- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
{
BOOL should = !CGSizeEqualToSize(self.collectionView.frame.size, newBounds.size);
return should;
}
を使用するよりも自然です。viewWillTransitionToSize
于 2015-12-07T22:34:28.677 に答える