Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«iOS. ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 56

Автор Π’Π°Π½Π΄Π°Π΄ Нахавандипур

β€” (NSInteger)collectionView:(UICollectionView *)collectionView

numberOfItemsInSection:(NSInteger)section{

return 0;

}


/* ΠœΡ‹ ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ сСкции Π² сборный Π²ΠΈΠ΄, поэтому для Π½Π°Ρ‡Π°Π»Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΠΌ здСсь nil */

β€” (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView

cellForItemAtIndexPath:(NSIndexPath *)indexPath{

return nil;

}


@end


На Π΄Π°Π½Π½ΠΎΠΌ этапС этот ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΌ. Но, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 5.1, ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π΅Π³ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π΅Π³Π°Ρ‚ прилоТСния устанавливаСт ΠΌΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ сборного Π²ΠΈΠ΄Π° Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ nil. Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ исчСзла, ΠΌΡ‹ собираСмся ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΅Π΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 5.3.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

Π Π°Π·Π΄Π΅Π»Ρ‹ 5.0 ΠΈ 5.1.

5.3. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ Π² сборном Π²ΠΈΠ΄Π΅

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

ВрСбуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваш сборный Π²ΠΈΠ΄ Π±Ρ‹Π» скомпонован ΠΊΠ°ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π° (сСтка), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ содСрТимоС ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π»ΠΎΡΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π½Π° рис. 5.1.

РСшСниС

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ экзСмпляр класса UICollectionViewFlowLayout, инстанцируйтС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ сборного Π²ΠΈΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°-ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° initWithCollectionViewLayout: ΠΈΠ· класса UICollectionViewController, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ этому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ваш ΠΌΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

ΠœΠ°ΠΊΠ΅Ρ‚ для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½ΡΡ‚Π°Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Но ΠΏΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ сборному Π²ΠΈΠ΄Ρƒ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ сконфигурирован. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ обсудим Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ свойства экзСмпляра класса UICollectionViewFlowLayout ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, нас интСрСсуСт, ΠΊΠ°ΠΊ эти свойства Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ячССк сборного Π²ΠΈΠ΄Π° Π½Π° экранС.

β€’ minimumLineSpacing β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‰Π΅Π΅ ΠΌΠ°ΠΊΠ΅Ρ‚Ρƒ с ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ минимальноС количСство Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ рядами. ΠœΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈ большС пространства, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° выглядСла красиво, Π½ΠΎ мСньшС Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚. Если ваш сборный Π²ΠΈΠ΄ слишком ΠΌΠ°Π» ΠΈ Π² Π½Π΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ всС элСмСнты, ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Ρ€Π΅Π·Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ Π² iOS SDK.

β€’ minimumInteritemSpacing β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‰Π΅Π΅ ΠΌΠ°ΠΊΠ΅Ρ‚Ρƒ с ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ минимальноС количСство Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ячСйками Π² ΠΎΠ΄Π½ΠΎΠΉ строкС. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅ это минимальноС количСство Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΈ ΠΌΠ°ΠΊΠ΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ это количСство Π² зависимости ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° сборного Π²ΠΈΠ΄Π°.

β€’ itemSize β€” Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° CGSize, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйки Π² сборном Π²ΠΈΠ΄Π΅.

β€’ scrollDirection β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° UICollectionViewScrollDirection, ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‰Π΅Π΅ ΠΌΠ°ΠΊΠ΅Ρ‚Ρƒ с ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ содСрТимоС сборного Π²ΠΈΠ΄Π°. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π»ΠΈΠ±ΠΎ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ, Π»ΠΈΠ±ΠΎ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ, Π½ΠΎ Π½Π΅ Π² ΠΎΠ±ΠΎΠΈΡ… направлСниях ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ это свойство ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ UICollectionViewScrollDirectionVertical, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° UICollectionViewScrollDirectionHorizontal.

β€’ sectionInset β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° UIEdgeInsets, Π·Π°Π΄Π°ΡŽΡ‰Π΅Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠΎΠ»Π΅ΠΉ Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сСкции. Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, поля β€” это пространство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ относится Π½ΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ячССк. Для создания Ρ‚Π°ΠΊΠΈΡ… отступов ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ UIEdgeInsetsMake. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ поля Π΅ΡΡ‚ΡŒ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ, Π½ΠΈΠΆΠ½ΠΈΠΉ, ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΈ Π»Π΅Π²Ρ‹ΠΉ ΠΊΡ€Π°ΠΉ, всС ΠΎΠ½ΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ числами с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ. НС Π²ΠΎΠ»Π½ΡƒΠΉΡ‚Π΅ΡΡŒ, Ссли это объяснСниС каТСтся ΠΏΡƒΡ‚Π°Π½Ρ‹ΠΌ β€” вскорС всС встанСт Π½Π° свои мСста.

Π’ дальнСйшСм Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Π±ΡƒΠ΄Ρƒ ΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ инструкции, ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… 5.1 ΠΈ 5.2, ΠΈ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ написан ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ сборного Π²ΠΈΠ΄Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π΅Π»Π΅Π³Π°Ρ‚ прилоТСния, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΉ этот ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ сборного Π²ΠΈΠ΄Π° Π² качСствС ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° ΠΎΠΊΠ½Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ собираСмся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄Π΅Π»Π΅Π³Π°Ρ‚ прилоТСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ сборного Π²ΠΈΠ΄Π° Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ:


#import Β«AppDelegate.hΒ»

#import Β«ViewController.hΒ»


@implementation AppDelegate

β€” (UICollectionViewFlowLayout *) flowLayout{


UICollectionViewFlowLayout *flowLayout =

[[UICollectionViewFlowLayout alloc] init];


flowLayout.minimumLineSpacing = 20.0f;

flowLayout.minimumInteritemSpacing = 10.0f;

flowLayout.itemSize = CGSizeMake(80.0f, 120.0f);

flowLayout.scrollDirection = UICollectionViewScrollDirectionVertical;

flowLayout.sectionInset = UIEdgeInsetsMake(10.0f, 20.0f, 10.0f, 20.0f);


return flowLayout;

}


β€” (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{


/* Π˜Π½ΡΡ‚Π°Π½Ρ†ΠΈΡ€ΡƒΠ΅ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ сборного Π²ΠΈΠ΄Π° с Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΌ ΠΌΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ

для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ */

ViewController *viewController =

[[ViewController alloc]

initWithCollectionViewLayout: [self flowLayout]];


self.window = [[UIWindow alloc] initWithFrame:

[[UIScreen mainScreen] bounds]];


self.window.backgroundColor = [UIColor whiteColor];


/* Π—Π°Π΄Π°Π΅ΠΌ сборный Π²ΠΈΠ΄ Π² качСствС ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° ΠΎΠΊΠ½Π° */

self.window.rootViewController = viewController;

[self.window makeKeyAndVisible];

return YES;


}


РСализация ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° сборного Π²ΠΈΠ΄Π° остаСтся Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 5.2. Если сСйчас Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ просто Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ экран, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² стандартной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° сборного Π²ΠΈΠ΄Π° Ρ„ΠΎΠ½ Π²ΠΈΠ΄Π° Π΄Π°ΠΆΠ΅ Π½Π΅ замСняСтся Π½Π° Π±Π΅Π»Ρ‹ΠΉ. Пока нас это устраиваСт. Как ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡƒΠΆΠ΅ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ нас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠ°ΠΊΠ΅Ρ‚Π°.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

Π Π°Π·Π΄Π΅Π»Ρ‹ 5.1 ΠΈ 5.2.

5.4. НаполнСниС сборного Π²ΠΈΠ΄Π° ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΌ содСрТимым

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

Π’Ρ‹ ΡƒΠΆΠ΅ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π»ΠΈ для вашСго сборного Π²ΠΈΠ΄Π° ΠΌΠ°ΠΊΠ΅Ρ‚ с ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ, Π½ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π² Π½Π΅ΠΌ ячСйки.

РСшСниС

Для прСдставлСния Π²Π°ΡˆΠΈΡ… ячССк Π»ΠΈΠ±ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ классом UICollectionViewCell, Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΎΡ‚ Π½Π΅Π³ΠΎ подкласс, Π½Π° Π±Π°Π·Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠΆΠ΅ смоТСтС Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π΄Π°Π»Π΅Π΅, Ρƒ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ». xib, ассоциированный с ячСйкой.

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ я исхоТу ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ 5.1–5.3 ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Π±Π°Π·ΠΎΠ²ΡƒΡŽ настройку ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π‘ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ порядку. НачнСм с самого простого ΠΈ самого быстрого способа создания ячССк. Π˜Π½ΡΡ‚Π°Π½Ρ†ΠΈΡ€ΡƒΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚ΠΈΠΏΠ° UICollectionViewCell ΠΈ занСсСм ΠΈΡ… Π² сборный Π²ΠΈΠ΄ Π² нашСм источникС Π΄Π°Π½Π½Ρ‹Ρ…. Π£ класса UICollectionViewCell Π΅ΡΡ‚ΡŒ свойство Π²ΠΈΠ΄Π° с содСрТимым, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ contentView, ΠΊΡƒΠ΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ для отобраТСния собствСнныС Π²ΠΈΠ΄Ρ‹. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ свойства ячСйки, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°. ИмСнно Ρ†Π²Π΅Ρ‚ΠΎΠΌ Ρ„ΠΎΠ½Π° ΠΌΡ‹ ΠΈ займСмся Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Но ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Ρ‚ΡŒ, опишСм, Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ собираСмся Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ объясним стоящиС ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°ΠΌΠΈ трСбования.

ΠœΡ‹ собираСмся Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сборный Π²ΠΈΠ΄ с ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Ρ‚Ρ€ΠΈ сСкции. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· сСкций Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ 20 Π΄ΠΎ 40 ячССк, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ сСкции всС ячСйки красныС, Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” Π·Π΅Π»Π΅Π½Ρ‹Π΅, Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ β€” синиС (рис. 5.5).


Рис. 5.5. ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ сборный Π²ΠΈΠ΄ с ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Ρ‚Ρ€ΠΈ сСкции с ячСйками Ρ€Π°Π·Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ²


Π˜Ρ‚Π°ΠΊ, Π½Π°Ρ‡Π½Π΅ΠΌ. Π’ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ сборного Π²ΠΈΠ΄Π° создадим ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ массив ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ². Π”Π°Π»Π΅Π΅ присвоим эти Ρ†Π²Π΅Ρ‚Π° ячСйкам ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сСкции:


/* Π£ нас Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€ΠΈ сСкции, ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ свой Ρ†Π²Π΅Ρ‚ ячССк. Π”ля прСдставлСния Ρ†Π²Π΅Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ самыС ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ экзСмпляры UIColor, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΏΠΎΠ·ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡΡ‡Π΅Π΅ΠΊ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… сСкциях */

β€” (NSArray *) allSectionColors{


static NSArray *allSectionColors = nil;


if (allSectionColors == nil){

allSectionColors = @[

[UIColor redColor],

[UIColor greenColor],

[UIColor blueColor],

];

}


return allSectionColors;


}


ПослС этого ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ initWithCollectionViewLayout: вашСго ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° сборного Π²ΠΈΠ΄Π° ΠΈ зарСгистрируйтС UICollectionViewCell с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ. НС Π²ΠΎΠ»Π½ΡƒΠΉΡ‚Π΅ΡΡŒ, Ссли ΠΏΠΎΠΊΠ° Π½Π΅ совсСм ΡƒΠ»Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚Π΅ Ρ…ΠΎΠ΄ мысли, взглянитС Π½Π° ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйки, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ваш сборный Π²ΠΈΠ΄, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сначала просмотрит ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ячССк, доступных для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования, ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚, Π΅ΡΡ‚ΡŒ Π»ΠΈ Π² этой ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΡƒΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Π΅Π΅ ячСйки. Если ΠΎΠ½ΠΈ найдутся, сборный Π²ΠΈΠ΄ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ ячСйки ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ½ создаст Π½ΠΎΠ²ΡƒΡŽ ячСйку ΠΈ Π²Π΅Ρ€Π½Π΅Ρ‚ Π΅Π΅ Π²Π°ΠΌ для выполнСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

Π’ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… вСрсиях iOS ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ячСйки, Ссли Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ Π½Π΅ ΡƒΠ΄Π°Π²Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ячСйки для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования (сборныС Π²ΠΈΠ΄Ρ‹ Π² Ρ€Π°Π½Π½ΠΈΡ… вСрсиях iOS отсутствовали). Однако с появлСниСм Π½ΠΎΠ²Ρ‹Ρ… API Apple Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π° ΠΎΡ‡Π΅Π½ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ ячСйками. Компания прСдоставила Π½ΠΎΠ²Ρ‹Π΅ API ΠΊΠ°ΠΊ для Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΈ для сборных Π²ΠΈΠ΄ΠΎΠ². ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² ΠΈ с Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π²ΠΈΠ΄ΠΎΠΌ, ΠΈ со сборным Π²ΠΈΠ΄ΠΎΠΌ. Если ΠΆΠ΅ Π²Π°ΠΌ приходится ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ячСйку, Ρ‚ΠΎ Π²Ρ‹ просто Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚Π΅ ΠΎΡ‚ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ сборного Π²ΠΈΠ΄Π° Π½ΠΎΠ²ΡƒΡŽ ячСйку Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π°. Если такая ячСйка имССтся Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования, Ρ‚ΠΎ ΠΎΠ½Π° (ячСйка) Π±ΡƒΠ΄Π΅Ρ‚ Π²Π°ΠΌ прСдоставлСна. Если Π½Π΅Ρ‚ β€” Ρ‚ΠΎ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈΠ»ΠΈ сборный Π²ΠΈΠ΄ автоматичСски создаст Ρ‚Π°ΠΊΡƒΡŽ ячСйку. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ называСтся рСгистрациСй ΠΌΠ½ΠΎΠ³ΠΎΡ€Π°Π·ΠΎΠ²ΠΎΠΉ ячСйки, ΠΎΠ½ рСализуСтся двумя способами: