3

UICollectionViewデバイスが縦向きから横向きに変わったときにセルのサイズを変更する方法はありますか? 新しい iOS 6 の自動レイアウトでは? 全体をリロードしたくありませんUICollectionView

誰かが疑問に思っていたら、解決策を見つけました。解決:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {

    
    if ([indexPath row] == 0 && ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait || [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown )){
        return CGSizeMake(768, 400);
    }else if ([indexPath row] == 0 && ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeLeft || [UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeRight)){
        return CGSizeMake(1024, 400);
    }

return CGSizeMake(255, 200);

}

したがって、メソッド sizeForItemAtIndexPath は、CGSize を使用して各セルの幅と高さを指定します。必要なのは、セルの向きを検出し、必要な特定の高さを返すことだけです。設計目的で 1 つのセルのみを変更したことに注意してください。

その後、次のように [invalidate layout] を呼び出しました。

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {

これは基本的にすべてのセルのレイアウトを再度取得し、UICollectionView のデータをリロードしません!

4

0 に答える 0