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

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

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

β€” (void) viewDidLoad{

[super viewDidLoad];

self.collectionView.backgroundColor = [UIColor whiteColor];


UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc]

initWithTarget: self

action:@selector(handlePinches:)];

for (UIGestureRecognizer *recognizer in

self.collectionView.gestureRecognizers){

if ([recognizer isKindOfClass: [pinch class]]){

[recognizer requireGestureRecognizerToFail: pinch];

}

}

[self.collectionView addGestureRecognizer: pinch];

}


НастраиваСм Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚Π΅Π»ΡŒ ТСстов Ρ‰ΠΈΠΏΠΊΠ° для Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° handlePinches: ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π°. БСйчас ΠΌΡ‹ напишСм этот ΠΌΠ΅Ρ‚ΠΎΠ΄:


β€” (void) handlePinches:(UIPinchGestureRecognizer *)paramSender{


CGSize DefaultLayoutItemSize = CGSizeMake(80.0f, 120.0f);


UICollectionViewFlowLayout *layout =

(UICollectionViewFlowLayout *)self.collectionView.collectionViewLayout;


layout.itemSize =

CGSizeMake(DefaultLayoutItemSize.width * paramSender.scale,

DefaultLayoutItemSize.height * paramSender.scale);


[layout invalidateLayout];

}


Π’ этом ΠΊΠΎΠ΄Π΅ Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ.

1. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ся, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ€ элСмСнта Π² ΠΌΠ°ΠΊΠ΅Ρ‚Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ сборного Π²ΠΈΠ΄Π° ΠΈΠΌΠ΅Π΅Ρ‚ ΡˆΠΈΡ€ΠΈΠ½Ρƒ 80 Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈ высоту 120 Ρ‚ΠΎΡ‡Π΅ΠΊ. ИмСнно Ρ‚Π°ΠΊ ΠΌΡ‹ создали ΠΌΠ°ΠΊΠ΅Ρ‚ с ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ для сборного Π²ΠΈΠ΄Π° Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 5.3. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π±Π΅Ρ€Π΅ΠΌ коэффициСнт ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚ распознаватСля ТСстов Ρ‰ΠΈΠΏΠΊΠ°, ΠΈ ΡƒΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ Π½Π° Π½Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ элСмСнтов ΠΈΠ· сборного Π²ΠΈΠ΄Π°. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ эти экранныС элСмСнты ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒΡΡ ΠΈΠ»ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ экран.

2. ΠŸΠΎΡΠ»Π΅ Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π±Ρ‹Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Ρ€Π°Π·ΠΌΠ΅Ρ€ элСмСнта, примСняСмый ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² ΠΌΠ°ΠΊΠ΅Ρ‚Π΅ с ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ, ΠΌΠ°ΠΊΠ΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ. Π’ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΠΈΠ΄Π°Ρ… ΠΌΡ‹ обновляли Π»ΠΈΠ±ΠΎ Π½ΡƒΠΆΠ½Ρ‹Π΅ сСкции Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π»ΠΈΠ±ΠΎ всю Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС обновляСм ΠΈΠ»ΠΈ упраздняСм ΠΌΠ°ΠΊΠ΅Ρ‚, ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹ΠΉ ΠΊ сборному Π²ΠΈΠ΄Ρƒ. Π­Ρ‚ΠΎ дСлаСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сборный Π²ΠΈΠ΄ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ «пСрСрисовал» сСбя послС измСнСния ΠΌΠ°ΠΊΠ΅Ρ‚Π°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сборный Π²ΠΈΠ΄ Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всСго ΠΎΠ΄ΠΈΠ½ ΠΌΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΡ€ΠΈ ΡƒΠΏΡ€Π°Π·Π΄Π½Π΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΌΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° потрСбуСтся ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ вСсь сборный Π²ΠΈΠ΄. Если Π±Ρ‹ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°ΠΊΠ΅Ρ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сСкции, Ρ‚ΠΎ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ сСкции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ связаны с Π΄Π°Π½Π½Ρ‹ΠΌ ΠΌΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ. Но, имСя Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ сСйчас, ΠΏΡ€ΠΈ ΡƒΠΏΡ€Π°Π·Π΄Π½Π΅Π½ΠΈΠΈ ΠΌΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° придСтся ΠΏΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ вСсь сборный Π²ΠΈΠ΄.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, запустив ΠΊΠΎΠ΄, Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с экраном с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π²ΡƒΡ… ΠΏΠ°Π»ΡŒΡ†Π΅Π². Если Π²Ρ‹ сводитС ΠΏΠ°Π»ΡŒΡ†Ρ‹, Ρ‚ΠΎ элСмСнты вашСго сборного Π²ΠΈΠ΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅, Π° Ссли Ρ€Π°Π·Π²ΠΎΠ΄ΠΈΡ‚Π΅ β€” ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°ΡŽΡ‚ΡΡ.

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

Π Π°Π·Π΄Π΅Π»Ρ‹ 5.3 ΠΈ 5.5.

5.9. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ контСкстных мСню Π² ячСйках сборных Π²ΠΈΠ΄ΠΎΠ²

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

Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· экранных элСмСнтов Π² вашСм сборном Π²ΠΈΠ΄Π΅ ΠΈ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π° Π½Π΅ΠΌ ΠΏΠ°Π»Π΅Ρ†, трСбуСтся вывСсти контСкстноС мСню. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ· этого мСню элСмСнт ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΈ Ρ‚. Π΄.

РСшСниС

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Π½Ρ‹Π΅ мСню ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ встроСны Π² сборныС Π²ΠΈΠ΄Ρ‹. Π§Ρ‚ΠΎΠ±Ρ‹ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…, потрСбуСтся всСго лишь Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ· ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° UICollectionViewDelegate.

β€’ collectionView: shouldShowMenuForItemAtIndexPath: β€” срСда Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ этому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ индСксный ΠΏΡƒΡ‚ΡŒ ΠΊ элСмСнту. ΠœΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ дальнСйшСС дСйствиС: Π΄ΠΎΠ»ΠΆΠ΅Π½ этот элСмСнт ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ контСкстноС мСню ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

β€’ collectionView: canPerformAction: forItemAtIndexPath: withSender: β€” срСда Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ этому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ сСлСктор Ρ‚ΠΈΠΏΠ° SEL. МоТно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ сСлСктор (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ для этого ΠΎΠ½ прСобразуСтся Π² строку, которая Π·Π°Ρ‚Π΅ΠΌ сравниваСтся со строкой, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ дСйствиС) ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π»ΠΈ Π²Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ дСйствиС ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ. Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚Π΅ YES, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ дСйствиС, Π»ΠΈΠ±ΠΎ NO, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ сСлСктор Π² строку, воспользовавшись ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ NSStringFromSelector. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ сСлСкторов β€” copy: ΠΈΠ»ΠΈ paste: для ΠΊΠΎΠΌΠ°Π½Π΄ контСкстного мСню ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ соотвСтствСнно.

β€’ collectionView: performAction: forItemAtIndexPath: withSender: β€” здСсь выполняСтся дСйствиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ с вашСго Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ Π² сборном Π²ΠΈΠ΄Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Ρ… Π΄Π΅Π»Π΅Π³Π°Ρ‚Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

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

НС откладывая Π² Π΄ΠΎΠ»Π³ΠΈΠΉ ящик, Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠΌ ΠΊΠΎΠ΄, написанный Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 5.5. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ячСйках контСкстноС мСню Copy (ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ), Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΌΠ΅Ρ‚ Π½Π° ячСйку ΠΈ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя Π·Π°Π΄Π΅Ρ€ΠΆΠΈΡ‚ Π½Π° Π½Π΅ΠΉ ΠΏΠ°Π»Π΅Ρ†. Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ элСмСнт Π² мСню копирования, ΠΌΡ‹ скопируСм ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· ячСйки Π² Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π°. ПослС этого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ смоТСт Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ это ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ прилоТСния Mail.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Π² Π΄Π΅Π»Π΅Π³Π°Ρ‚Π΅ сборного Π²ΠΈΠ΄Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ collectionView: shouldShowMenuForItemAtIndexPath:. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ сборного Π²ΠΈΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сам являСтся ΠΈ Π΄Π΅Π»Π΅Π³Π°Ρ‚ΠΎΠΌ ΠΈ источником Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ фактичСски Π½Π°ΠΌ придСтся всСго лишь Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ сборного Π²ΠΈΠ΄Π°, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:


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

shouldShowMenuForItemAtIndexPath:(NSIndexPath *)indexPath{

return YES;

}


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


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

canPerformAction:(SEL)action

forItemAtIndexPath:(NSIndexPath *)indexPath

withSender:(id)sender{


if (action == @selector(copy:)){

return YES;

}


return NO;

}


Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π½Π°ΠΌ Π΄Π°ΠΆΠ΅ Π½Π΅ трСбуСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ сСлСктор Π² строку, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с Ρ‚Π°ΠΊΠΈΠΌΠΈ строками, ΠΊΠ°ΠΊ copy:. ΠœΡ‹ всСго лишь ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ равСнства, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π»ΠΈ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹ΠΉ сСлСктор нашим оТиданиям. Если это Ρ‚Π°ΠΊ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ YES, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС β€” NO.

НаконСц, Π½Π°ΠΌ потрСбуСтся Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Π΅Π»Π΅Π³Π°Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ collectionView: performAction: forItemAtIndexPath: withSender:. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ, Π±Ρ‹Π»ΠΎ Π»ΠΈ Π²Ρ‹Π·Π²Π°Π½ΠΎ дСйствиС копирования, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, взятоС ΠΈΠ· ячСйки, Π² Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π°. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ смоТСт Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ„Π°ΠΉΠ» ΠΈΠ· ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ прилоТСния:


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

performAction:(SEL)action

forItemAtIndexPath:(NSIndexPath *)indexPath

withSender:(id)sender{


if (action == @selector(copy:)){


MyCollectionViewCell *cell = (MyCollectionViewCell *)[collectionView

cellForItemAtIndexPath: indexPath];


[[UIPasteboard generalPasteboard]

setImage: cell.imageViewBackgroundImage.image];


}


}


Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Π²Ρ‹ запуститС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π½Π°ΠΆΠΌΠ΅Ρ‚Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· элСмСнтов Π² сборном Π²ΠΈΠ΄Π΅, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΠΌ ΠΏΠ°Π»Π΅Ρ†, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΊΠ°ΠΊ Π½Π° рис. 5.13.


Рис. 5.13. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ контСкстного мСню, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ Π² ячСйкС сборного Π²ΠΈΠ΄Π°

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

Π Π°Π·Π΄Π΅Π» 5.5.

Π“Π»Π°Π²Π° 6. Раскадровки

6.0. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹ iOS ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ Π²ΠΈΠ΄ΠΎΠ². ΠœΡ‹ ΡƒΠΌΠ΅Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° экран ΠΈ ΡƒΠ±ΠΈΡ€Π°Ρ‚ΡŒ с Π½Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ Π²ΠΈΠ΄ΠΎΠ². Но Apple ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΡ‰Π΅, ΠΈ поэтому Π² систСмС появились раскадровки. Раскадровки β€” это Π½ΠΎΠ²Ρ‹ΠΉ способ опрСдСлСния связСй ΠΌΠ΅ΠΆΠ΄Ρƒ экранами вашСго прилоТСния. НапримСр, Ссли Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ 20 ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Π²ΠΈΠ΄ΠΎΠ², Π²Ρ‹ написали эти ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ Π³ΠΎΠ΄ Π½Π°Π·Π°Π΄, Π° сСйчас снова ΠΈΠ·ΡƒΡ‡Π°Π΅Ρ‚Π΅ исходный ΠΊΠΎΠ΄, Ρ‚ΠΎ Π²Π°ΠΌ придСтся снова Ρ€Π°ΡΠΏΡƒΡ‚Ρ‹Π²Π°Ρ‚ΡŒ всС замысловатыС соСдинСния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ Π²ΠΈΠ΄ΠΎΠ². Π’Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° поднимаСтся Π²Π²Π΅Ρ€Ρ… ΠΏΠΎ стСку, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ‚ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ΅ дСйствиС. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ слоТно, особСнно Ссли Π²Ρ‹ Π½Π΅ слишком ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΠ΄. И Π²ΠΎΡ‚ Ρ‚ΡƒΡ‚ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ раскадровка. Раскадровка позволяСт ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ сразу вСсь ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс прилоТСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ связи ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ Π²ΠΈΠ΄ΠΎΠ² Π½Π° ΠΎΠ΄Π½ΠΎΠΌ экранС. Π”Π°, всС Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ просто.

Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ прСимущСствами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π΅Ρ‚ раскадровка, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΏΠ»ΠΎΡ‚Π½ΡƒΡŽ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с конструктором интСрфСйсов. НС Π²ΠΎΠ»Π½ΡƒΠΉΡ‚Π΅ΡΡŒ: ΠΎΠ±ΠΎ всСм Π²Π°ΠΆΠ½ΠΎΠΌ рассказано Π² этой Π³Π»Π°Π²Π΅.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с раскадровками ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экран, Π½Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΌ содСрТимым, называСтся сцСной. ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ сцСной ΠΈ раскадровкой Π² iPhone ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π²ΠΈΠ΄Π° ΠΊ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ Π²ΠΈΠ΄Π°. Π’Π΅ΡΡŒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ сцСны отобраТаСтся Π½Π° экранС ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, соотвСтствСнно, ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ воспринимаСт эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. На iPad ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ сцСны, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ ΠΏΠ»Π°Π½ΡˆΠ΅Ρ‚Π° довольно большой экран.