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

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

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

РСшСниС

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π΄Π²Π° ограничСния: ΠΎΠ΄Π½ΠΎ для выравнивания ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ center.x Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΠΏΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ center.x Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°, Π΄Ρ€ΡƒΠ³ΠΎΠ΅ β€” для выравнивания ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ center.y Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΠΏΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ center.y Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°.

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

НачнСм с создания простой ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ выровняСм ΠΏΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ экрана. Как Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π΅ «РСшСниС» Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°, для этого всСго лишь трСбуСтся Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ x ΠΈ y Ρ†Π΅Π½Ρ‚Ρ€Π° нашСй ΠΊΠ½ΠΎΠΏΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌ x ΠΈ y Ρ†Π΅Π½Ρ‚Ρ€Π° Ρ‚ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится ΠΊΠ½ΠΎΠΏΠΊΠ°. Для этого ΠΌΡ‹ напишСм Π΄Π²Π° ограничСния ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΈΡ… ΠΊ Π²ΠΈΠ΄Ρƒ, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅ΠΌΡƒ Π½Π°ΡˆΡƒ ΠΊΠ½ΠΎΠΏΠΊΡƒ (Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰Π΅ΠΌΡƒ Π²ΠΈΠ΄Ρƒ этой ΠΊΠ½ΠΎΠΏΠΊΠΈ). Π’ΠΎΡ‚ простой ΠΊΠΎΠ΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΎΠ³ΠΎ эффСкта:


#import Β«ViewController.hΒ»


@interface ViewController ()

@property (nonatomic, strong) UIButton *button;

@end


@implementation ViewController


β€” (void)viewDidLoad{

[super viewDidLoad];


/* 1) Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡƒ */

self.button = [UIButton buttonWithType: UIButtonTypeSystem];

self.button.translatesAutoresizingMaskIntoConstraints = NO;

[self.button setTitle:@"Button" forState: UIControlStateNormal];

[self.view addSubview: self.button];


UIView *superview = self.button.superview;


/* 2) Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ для цСнтрирования ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ */

NSLayoutConstraint *centerXConstraint =

[NSLayoutConstraint constraintWithItem: self.button

attribute: NSLayoutAttributeCenterX

relatedBy: NSLayoutRelationEqual

toItem: superview

attribute: NSLayoutAttributeCenterX

multiplier:1.0f

constant:0.0f];


/* 3) Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ для цСнтрирования ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ */

NSLayoutConstraint *centerYConstraint =

[NSLayoutConstraint constraintWithItem: self.button

attribute: NSLayoutAttributeCenterY

relatedBy: NSLayoutRelationEqual

toItem: superview

attribute: NSLayoutAttributeCenterY

multiplier:1.0f

constant:0.0f];


/* Π”обавляСм ограничСния ΠΊ Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰Π΅ΠΌΡƒ Π²ΠΈΠ΄Ρƒ ΠΊΠ½ΠΎΠΏΠΊΠΈ */

[superview addConstraints:@[centerXConstraint, centerYConstraint]];


}


@end

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π²ΠΈΠ΄Π° пытаСтся ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ iOS, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ интСрфСйса, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹Π΅ Π½Π° этом устройствС. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ располоТСна Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ экрана, нСзависимо ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° устройства ΠΈ Π΅Π³ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π°Ρ‡Π½Π΅Ρ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π²ΠΈΠ΄Ρ‹ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ самого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Для этого ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Xcode ΠΊ свойствам Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ General (ΠžΠ±Ρ‰ΠΈΠ΅), Π° Π² Π½Π΅ΠΉ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π» Device Orientation (ΠžΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ устройства). Π—Π°Ρ‚Π΅ΠΌ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ (рис. 3.2).

Рис. 3.2. АктивизируСм Π² Xcode всС Π²ΠΈΠ΄Ρ‹ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ для Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°


Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° устройствС ΠΈΠ»ΠΈ эмуляторС, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π° экранС ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ. Бколько Π±Ρ‹ Π²Ρ‹ Π½ΠΈ Π²Ρ€Π°Ρ‰Π°Π»ΠΈ устройство, ΠΊΠ½ΠΎΠΏΠΊΠ° Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ сдвигаСтся с Ρ†Π΅Π½Ρ‚Ρ€Π° экрана. ΠœΡ‹ смогли Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ этого, Π½Π΅ написав Π½ΠΈ строки ΠΊΠΎΠ΄Π° для настройки Ρ„Ρ€Π΅ΠΉΠΌΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±Π΅Π· ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ Π±Π΅Π· коррСктирования полоТСния ΠΊΠ½ΠΎΠΏΠΊΠΈ. ЀактичСски здСсь Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ возмоТности автоматичСской ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ (рис. 3.3). Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹ΡˆΠ΅Π½ ΠΏΠΎ Ρ‚ΠΎΠΉ простой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, Ρ‡Ρ‚ΠΎ наш ΠΊΠΎΠ΄ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° любом устройствС, нСзависимо ΠΎΡ‚ Π΅Π³ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ экрана. Напротив, Ссли Π±Ρ‹ ΠΌΡ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Ρ„Ρ€Π΅ΠΉΠΌ для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, Ρ‚ΠΎ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„Ρ€Π΅ΠΉΠΌΡ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ устройства Π²ΠΎ всСх ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΡ… нас ориСнтациях, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… устройствах с iOS ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ экраны с довольно нСсхоТими Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ. Π’ частности, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, написанноС Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅, Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ Π½Π° iPad, ΠΈ Π½Π° iPhone, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ экрана нСзависимо ΠΎΡ‚ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ устройства ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΅Π³ΠΎ экрана.


Рис. 3.3. Кнопка остаСтся Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ экрана ΠΏΡ€ΠΈ любой ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

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

Π Π°Π·Π΄Π΅Π»Ρ‹ 3.0 ΠΈ 3.2.

3.2. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° языкС Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ форматирования

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

ВрСбуСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ограничСния, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ способ выравнивания элСмСнта ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ Π² Π΅Π³ΠΎ Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅.

РСшСниС

Π’ строкС форматирования ограничСния ΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ H:, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ, ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ V: для выравнивания ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ.

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

Π― Π½Π΅ Π±ΡƒΠ΄Ρƒ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ язык Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ форматирования прост для понимания, β€” Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², ΠΎΠ½ довольно Π·Π°ΠΏΡƒΡ‚Π°Π½. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, надСюсь, прояснят ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ. Π’ΠΎ всСх этих ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π° экранС.

1. ΠšΠ½ΠΎΠΏΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° расстоянии 100 Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΎΡ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΡ€Π°Π΅Π² Π΅Π΅ Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°:


H:|-100-[_button]-100-|


2. ΠšΠ½ΠΎΠΏΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° расстоянии 100 Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΎΡ‚ Π»Π΅Π²ΠΎΠ³ΠΎ края Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΅Π΅ ΡˆΠΈΡ€ΠΈΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π½Π΅ мСньшС 50 Ρ‚ΠΎΡ‡Π΅ΠΊ, Π° расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΈ ΠΏΡ€Π°Π²Ρ‹ΠΌ ΠΊΡ€Π°Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ 100 Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅:


H:|-(<=100)-[_button(>=50)]-(<=100)-|


3. ΠšΠ½ΠΎΠΏΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° стандартном расстоянии ΠΎΡ‚ Π»Π΅Π²ΠΎΠ³ΠΎ края Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π° (стандартныС расстояния ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Apple) ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡˆΠΈΡ€ΠΈΠ½Ρƒ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 100, Π½ΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 200 Ρ‚ΠΎΡ‡Π΅ΠΊ:


H:|-[_button(>=100,<=200)]


Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ½ΡƒΡ‚ΡŒ ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ форматирования. Но, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ усвоитС основы этого процСсса, ΠΎΠ½ постСпСнно Π½Π°Ρ‡Π½Π΅Ρ‚ ΡƒΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρƒ вас Π² Π³ΠΎΠ»ΠΎΠ²Π΅. АналогичныС ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΈ ΠΊ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΡŽ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ V:, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


V:[_button]-(>=100)-|


ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° Β«ΠΏΡ€ΠΈΠ»ΠΈΠΏΠ½Π΅Ρ‚Β» ΠΊ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌΡƒ ΠΊΡ€Π°ΡŽ Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π° (Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ дСйствуСт ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ начинаСтся с V) ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° расстоянии Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 100 Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΎΡ‚ Π΅Π³ΠΎ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ края.

Π˜Ρ‚Π°ΠΊ, ΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΈΠ·ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. НапишСм Π½Π° языкС Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ форматирования ограничСния, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ интСрфСйс, ΠΊΠ°ΠΊ Π½Π° рис. 3.4.


Рис. 3.4. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, ΠΎΠΏΠΈΡ€Π°ΡΡΡŒ Π½Π° наши ограничСния ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ языком Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ форматирования

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Π°ΠΌ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π° сами прилоТСния выглядСли Π±ΠΎΠ»Π΅Π΅ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎ, Apple Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ стандартныС расстояния (ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. Π­Ρ‚ΠΈ стандарты описаны Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ iOS Human Interface Guidelines.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π²ΠΏΠ»ΠΎΡ‚Π½ΡƒΡŽ Π·Π°Π½ΡΡ‚ΡŒΡΡ написаниСм ΠΊΠΎΠ΄Π°, опишСм ограничСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² соотвСтствии с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ рисунком.

β€’ ΠŸΠΎΠ»Π΅ для адрСса элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚ стандартноС расстояниС ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ Π΄ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π²ΠΈΠ΄Π°.

β€’ ΠŸΠΎΠ»Π΅ для подтвСрТдСния адрСса элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚ стандартноС расстояниС ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ Π΄ΠΎ поля с адрСсом элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹.

β€’ ΠšΠ½ΠΎΠΏΠΊΠ° Register (Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ) ΠΈΠΌΠ΅Π΅Ρ‚ стандартноС расстояниС ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ Π΄ΠΎ поля для подтвСрТдСния адрСса элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹.

β€’ Π’сС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ (Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰Π΅Π³ΠΎ) Π²ΠΈΠ΄Π°.

β€’ ΠŸΠΎΠ»Ρ для адрСса элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈ подтвСрТдСния этого адрСса ΠΈΠΌΠ΅ΡŽΡ‚ стандартноС расстояниС ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ ΠΎΡ‚ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΈ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ ΠΊΡ€Π°Π΅Π² Π²Ρ‹ΡˆΠ΅ΡΡ‚ΠΎΡΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°.

β€’ Π¨ΠΈΡ€ΠΈΠ½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ являСтся фиксированной ΠΈ составляСт 128 Ρ‚ΠΎΡ‡Π΅ΠΊ.


Рассмотрим ΠΊΠΎΠ΄, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ всСх этих Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ. Для Π½Π°Ρ‡Π°Π»Π° просто ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ всС ограничСния Π½Π° языкС Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ форматирования ΠΈ помСстим эти опрСдСлСния Π²Ρ‹ΡˆΠ΅ Π²ΠΈΠ΄Π° с ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ:


/* ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ для поля с адрСсом элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ */

NSString *const kEmailTextFieldHorizontal = @"H:|-[_textFieldEmail]-|";

NSString *const kEmailTextFieldVertical = @"V:|-[_textFieldEmail]";


/* ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ для поля, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ подтвСрТдаСтся адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ */

NSString *const kConfirmEmailHorizontal = @"H:|-[_textFieldConfirmEmail]-|";

NSString *const kConfirmEmailVertical =

@"V:[_textFieldEmail]-[_textFieldConfirmEmail]";


/* ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ для рСгистрационной ΠΊΠ½ΠΎΠΏΠΊΠΈ */

NSString *const kRegisterVertical =

@"V:[_textFieldConfirmEmail]-[_registerButton]";