2013-01-03 20 views
7

iPad uygulamasında UICollectionView akış düzenini kullanıyorum. Farklı genişlik ve yüksekliğe sahip hücrelerim var. Toplama görünümü için düzen olarak UICollectionViewFlowLayout alt sınıfını kullandığımda, hücreler arasındaki boşlukları gösterir.UICollectionView sütun ızgara boşlukları

Sütunda büyük bir hücre varsa, bu sütunun ızgara ve küçük hücreleri, bu büyük hücrenin sütun içinde ortalanmasını sağlar. Hücre sarmasını sıkılaştırmanın daha iyi bir yolu var mı?

Yatay kaydırma kullanıyorum. layoutAttributesForElementsInRect: yöntemini kullanmayı denedim, ancak başarılı olamadım. Herkes layoutAttributesForElementsInRect: yöntemini kullanarak veya diğer yoluyla şey aynı tür yaptıysa lütfen bildirin

...

ekli görüntüyü bulabilirsiniz. ve layoutAttributesForElementsInRect: Ben UICollectionViewFlowLayout sınıflandırma ve hem benim layoutAttributesForItemAtIndexPath içinde

cevap

0

... solüsyon önceden enter image description here

sayesinde aynı tür ihtiyaç içeren yöntemler Bir yöntem

setLineAttributes:(UICollectionViewLayoutAttributes *)attributes visibleRect:(CGRect)visibleRect: 

çağrıda:

if (attributes.indexPath.item == 0 || attributes.indexPath.item == 1 || attributes.indexPath.item == 2) { 
    CGRect f = attributes.frame; 
    f.origin.x = 0; 
    attributes.frame = f; 
} else { 
    NSIndexPath *ipPrev = [NSIndexPath indexPathForItem:attributes.indexPath.item - 3 inSection:attributes.indexPath.section]; 
    CGRect fPrev = [self layoutAttributesForItemAtIndexPath:ipPrev].frame; 
    CGFloat rightPrev = fPrev.origin.x + fPrev.size.width + 10; 
    if (attributes.frame.origin.x <= rightPrev) 
     return; 

    CGRect f = attributes.frame; 
    f.origin.x = rightPrev; 
    attributes.frame = f; 
} 
+0

Yukarıdaki kodda 3 satır olacağını varsayalım. Ama bu her zaman olmayacak. Uygulamamın her hücrenin genişliğini ve yüksekliğini bilmediğini varsayın (sunucudan geldiğini veya çalışma zamanına karar vereceğini varsayalım), bu durumda satır ve sütun sayısını manuel olarak hesaplamamız gerekir. Ve sonra bitişik hücre çerçevesine göre her hücre kökeni hesaplamak gerekir. Bunun en iyi yol olup olmadığını veya başka bir şey olup olmadığını bilmiyorum. Ama yine de cevabınız için teşekkürler. – Swapnil

+0

Satırların sayısı her zaman aynı olmaz, mutlaka 3 değil, her zaman belirlenmiş sayıda satır olmaz. – user1968264

+0

evet .. ancak koleksiyon görünümü, satır ve sütun sayısını sağlamaz. Farklı boyutlarda (genişlik ve yükseklik) öğeler elde ettiğimizde, satır ve sütun sayısını da manuel olarak hesaplamamız gerekir. Daha iyi bir yolu var mı? – Swapnil

1

Bunu benzer şekilde kullanın

UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc] init]; 

layout.minimumInteritemSpacing = 0; 
layout.minimumLineSpacing = 2;