SORU
25 Kasım 2012, Pazar


Değişim farklı cihaz yönelimleri boyutu UİCollectionViewCell

UICollectionViewFlowLayout UICollectionView kullanıyorum.

Bu her hücre boyutunu ayarlayın

collectionView:layout:sizeForItemAtIndexPath:

Yatay dikey geçiş yaparken, her bir hücre boyutunda tamamen CollectionView boyutu, hücreler arasındaki dolgu alanı bırakmadan göre ayarlamak istiyorum.

Soru:

1) Nasıl bir hücre boyutunu değiştirmek için rotasyon olayı sonra mı?

2) Ve hücrelerin nerede düzenini nasıl daha iyi, her zaman ekranın tüm boyutu uygun mu?

CEVAP
1 Aralık 2012, CUMARTESİ


1) korumak ve çoklu düzen nesneleri takas olabilir, ama daha basit bir yolu var. Gerekli: sadece UICollectionViewController alt sınıf aşağıdakileri ekleyin ve boyutlarını ayarlayın

- (CGSize)collectionView:(UICollectionView *)collectionView
                  layout:(UICollectionViewLayout *)collectionViewLayout
  sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{    
    // Adjust cell size for orientation
    if (UIDeviceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation])) {
        return CGSizeMake(170.f, 170.f);
    }
    return CGSizeMake(192.f, 192.f);
}

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    [self.collectionView performBatchUpdates:nil completion:nil];
}

-performBatchUpdates:completion: arama düzeni geçersiz kılmak ve animasyon (sadece eğer ekstra ayarlamalar yapmak için eğer iki blok parametreler nil iletebilirsiniz) ile hücreleri yeniden boyutlandırmak olacaktır.

2) maddenin hardcoding Yerine -collectionView:layout:sizeForItemAtIndexPath boyutları sadece ekrana sığacak şekilde istediğiniz hücre sayısı collectionView bu yasak yükseklik veya genişliği bölün. Eğer collectionView eğer dikey olarak kaydırır eğer yatay veya genişliği verilirse eğer yükseklik kullanın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrey Menshikov

    Andrey Mensh

    28 Ocak 2012
  • bunliu

    bunliu

    2 Mayıs 2007
  • HBO

    HBO

    17 Mayıs 2006