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

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

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

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΈ, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, послСдний ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ собираСмся Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ограничСния, β€” это ΠΊΠ½ΠΎΠΏΠΊΠ°, располоТСнная Π² Π½ΠΈΠΆΠ½Π΅ΠΌ сСром Π²ΠΈΠ΄Π΅. ΠœΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Π΅Π΅ ограничСниями, называСтся applyConstraintsToButtonOnBottomGrayView. ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, обсудим трСбования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ограничСния для Π½ΠΈΠΆΠ½Π΅ΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ:

β€’ ΠΊΠ½ΠΎΠΏΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° Π² Π½ΠΈΠΆΠ½Π΅ΠΌ сСром Π²ΠΈΠ΄Π΅;

β€’ Π΅Π΅ Π»Π΅Π²Ρ‹ΠΉ ΠΊΡ€Π°ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΎΠΌΡƒ ΠΊΡ€Π°ΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ, находящСйся Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ сСром Π²ΠΈΠ΄Π΅;

β€’ Ρ Π½Π΅ΠΉ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ строго ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ значСния высоты ΠΈ ΡˆΠΈΡ€ΠΈΠ½Ρ‹; Π΅Π΅ высота ΠΈ ΡˆΠΈΡ€ΠΈΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ содСрТимого β€” Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΡ‚ тСкста Button, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π½Π° Π½Π΅ΠΉ записываСм.


β€” (void) applyConstraintsToButtonOnBottomGrayView{


NSDictionary *views = NSDictionaryOfVariableBindings(_topButton,

_bottomButton);


NSString *const kHConstraint = @"H:[_topButton][_bottomButton]";


/* Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ограничСния */

[self.bottomGrayView.superview addConstraints:

[NSLayoutConstraint constraintsWithVisualFormat: kHConstraint

options:0

metrics: nil

views: views]

];

/* Π’Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ограничСния */

[self.bottomButton.superview addConstraint:

[NSLayoutConstraint constraintWithItem: self.bottomButton

attribute: NSLayoutAttributeCenterY

relatedBy: NSLayoutRelationEqual

toItem: self.bottomGrayView

attribute: NSLayoutAttributeCenterY

multiplier:1.0f

constant:0.0f]

];


}


НаконСц, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° сообщаСт срСдС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Π’Π΅Π΄ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ этот аспСкт Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ сильно интСрСсовал нас Π² Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ supportedInterfaceOrientations Π² Π²ΠΈΠ΄Π΅ UIViewController:


β€” (NSUInteger) supportedInterfaceOrientations{

return UIInterfaceOrientationMaskAll;

}


Π˜Ρ‚Π°ΠΊ, Ρ€Π°Π±ΠΎΡ‚Π° с этим ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ Π²ΠΈΠ΄Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°. Запустим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ посмотрим, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΊΠ½ΠΈΠΆΠ½ΠΎΠΉ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ (рис. 3.7).


Рис. 3.7. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π² ΠΊΠ½ΠΈΠΆΠ½ΠΎΠΉ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ согласно трСбованиям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΡŠΡΠ²ΠΈΠ»ΠΈ


А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΌΠ΅Π½Ρ‚ истины! Π‘ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² альбомном Ρ€Π΅ΠΆΠΈΠΌΠ΅? ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ (рис. 3.8).


Рис. 3.8. Как ΠΈ оТидалось, Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый ΠΊΠΎΠ΄ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ ΠΏΡ€ΠΈ альбомной ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ экрана


ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ! ВсС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ.

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

Π Π°Π·Π΄Π΅Π» 3.0.

3.4. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ автоматичСской ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ Π² конструкторС интСрфСйсов

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

ВрСбуСтся Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ вСсь ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» конструктора интСрфСйсов для создания ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ интСрфСйсом.

РСшСниС

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги.

1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π² конструкторС интСрфСйсов Ρ„Π°ΠΉΠ» XIB ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» раскадровки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

2. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² конструкторС интСрфСйсов Π²Ρ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π²ΠΈΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ. ΠŸΡ€ΠΎΡΡ‚ΠΎ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° этом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅.

3. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° элСмСнтС мСню View β€” Utilities β€” Show File Inspector (Π’ΠΈΠ΄ β€” Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρ‹ β€” ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ инспСктор Ρ„Π°ΠΉΠ»ΠΎΠ²).

4. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² элСмСнтС File Inspector (Π˜Π½ΡΠΏΠ΅ΠΊΡ‚ΠΎΡ€ Ρ„Π°ΠΉΠ»ΠΎΠ²) Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Interface Builder Document (Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ конструктора интСрфСйсов) установлСн Ρ„Π»Π°ΠΆΠΎΠΊ Use Autolayout (Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ) (рис. 3.9).


Рис. 3.9. АктивизируСм Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ Π² конструкторС интСрфСйсов

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

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ интСрфСйсов Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ для программиста созданиС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ нашС участиС Π² этом сводится ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ. Π”ΠΎ Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π² iOS появилась Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ автоматичСской ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ, ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΌΠΈ панСлями (guideline bars). Π­Ρ‚ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ появлялись Π½Π° экранС, ΠΏΠΎΠΊΠ° Π²Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ ΠΏΠ°Π½Π΅Π»ΠΈ Π±Ρ‹Π»ΠΈ связаны с масками для автоматичСской ΠΏΠΎΠ΄Π³ΠΎΠ½ΠΊΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Π² ΠΊΠΎΠ΄Π΅, Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ограничСния. Но послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π² конструкторС интСрфСйсов Π±ΡƒΠ΄Π΅Ρ‚ установлСн Ρ„Π»Π°ΠΆΠΎΠΊ Use Autolayout (Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ), ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚ΡƒΡ‚ нСсколько ΠΈΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ΠΈ ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‚ ΠΎ Ρ‚Π΅Ρ… ограничСниях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ создаСт для вас Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ сам конструктор интСрфСйсов.

НСмного поэкспСримСнтируСм. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π² Xcode ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΎΠ΄Π½ΠΈΠΌ Π²ΠΈΠ΄ΠΎΠΌ (Single View Application). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π±ΡƒΠ΄Π΅Ρ‚ создано ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, содСрТащСС всСго ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π°. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊ классу ViewController, Π°. xib-Ρ„Π°ΠΉΠ» для Π½Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ViewController.xib. ΠŸΡ€ΠΎΡΡ‚ΠΎ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° этом Ρ„Π°ΠΉΠ»Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ конструктор интСрфСйсов ΠΎΡ‚ΠΊΡ€Ρ‹Π» Π΅Π³ΠΎ. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² инспСкторС Ρ„Π°ΠΉΠ»ΠΎΠ² установлСн Ρ„Π»Π°ΠΆΠΎΠΊ Use Autolayout (Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ) Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ описано Π² ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅ «РСшСниС» этого Ρ€Π°Π·Π΄Π΅Π»Π°.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ просто Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠ½ΠΎΠΏΠΊΡƒ (Button) ΠΈ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ Π΅Π΅ Π² Ρ†Π΅Π½Ρ‚Ρ€ экрана. Π”ΠΎΠΆΠ΄ΠΈΡ‚Π΅ΡΡŒ, ΠΏΠΎΠΊΠ° Π² конструкторС интСрфСйсов появятся ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ ΠΏΠ°Π½Π΅Π»ΠΈ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ понятно, Ρ‡Ρ‚ΠΎ Ρ†Π΅Π½Ρ‚Ρ€ ΠΊΠ½ΠΎΠΏΠΊΠΈ соотвСтствуСт Ρ†Π΅Π½Ρ‚Ρ€Ρƒ экрана. Π’ мСню Edit (ΠŸΡ€Π°Π²ΠΊΠ°) установитС Ρ„Π»Π°ΠΆΠΎΠΊ Show Document Outline (ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ структуру Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°). Если Ρƒ вас Π² конструкторС интСрфСйсов ΡƒΠΆΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ Ρ€Π°Π·Π΄Π΅Π» Document Outline (Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°), Ρ‚ΠΎ вмСсто Show Document Outline (ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ структуру Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°) Π½Π° этом мСстС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ надпись Hide Document Outline (Π‘ΠΊΡ€Ρ‹Ρ‚ΡŒ структуру Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°) β€” Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ Π½Π°Π΄ΠΎ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Document Outline (Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°) Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π», ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹ΠΉ Π³ΠΎΠ»ΡƒΠ±Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ. Он Π±Ρ‹Π» создан ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для вас ΠΈ называСтся Constraints (ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ). РаскройтС ограничСния, созданныС конструктором интСрфСйсов для этой ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ рис. 3.10.


Рис. 3.10. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ интСрфСйсов создал ограничСния ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ


Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструктора интСрфСйсов Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ довольно ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, ΠΈ для этого Π½Π΅ потрСбуСтся ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΈ Π΅Π΄ΠΈΠ½ΠΎΠΉ строки ΠΊΠΎΠ΄Π°. Но случаСтся, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π²Π°ΠΌ ограничСния Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ слоТны, Ρ‡Ρ‚ΠΎ ΠΈΡ… Π»ΡƒΡ‡ΡˆΠ΅ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ΄Π΅. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ²ΡˆΠΈΡΡŒ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ располоТСны Π½Π° экранС, Π²Ρ‹ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅, ΠΊΠ°ΠΊ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ β€” ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² конструкторС интСрфСйса, Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ΄Π΅ ΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ Ρ‚ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

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

Π Π°Π·Π΄Π΅Π» 3.0.

Π“Π»Π°Π²Π° 4. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ использованиС Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ²

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

Π’Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄ β€” это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄ с ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° сСкции. КаТдая такая сСкция, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, подраздСляСтся Π½Π° строки. КаТдая строка (Row) являСтся экзСмпляром класса UITableViewCell. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ собствСнныС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ строк Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅, дСлая подклассы этого класса.

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

Π’Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ источник Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ события ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°-Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Π΄Π°Π½Π½Ρ‹Ρ… для Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° опрСдСляСтся Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π΅ UITableViewDataSource, Π° Π΄Π΅Π»Π΅Π³Π°Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° β€” Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π΅ UITableViewDelegate.

Π₯отя экзСмпляр UITableView являСтся подклассом ΠΎΡ‚ UIScrollView, Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ. Π­Ρ‚ΠΎ скорСС Π±Π»Π°Π³ΠΎ, Ρ‡Π΅ΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅. Π’ Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ‹ обсудим Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы создания Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ², ΠΈΡ… настройки ΠΈ управлСния ΠΈΠΌΠΈ.

Π’Π°Π±Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ двумя способами:

β€’ Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ класса UITableViewController. Π­Ρ‚ΠΎΡ‚ класс Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ UIViewController (см. Ρ€Π°Π·Π΄Π΅Π» 1.9) Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ фактичСски это ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π°, Π½ΠΎ Π² Π½Π΅ΠΌ отобраТаСтся Π½Π΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄, Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°. ΠšΡ€Π°ΡΠΎΡ‚Π° этого класса Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΅Π³ΠΎ экзСмпляр ΡƒΠΆΠ΅ соотвСтствуСт ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌ UITableViewDelegate ΠΈ UITableViewDataSource. Π˜Ρ‚Π°ΠΊ, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° становится источником Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π΅Π»Π΅Π³Π°Ρ‚ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½ управляСт. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, источник Π΄Π°Π½Π½Ρ‹Ρ… для Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, Π²Π°ΠΌ всСго лишь потрСбуСтся Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ для Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, Π° Π½Π΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° Π² качСствС источника Π΄Π°Π½Π½Ρ‹Ρ… для Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°;