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

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

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

Π Π°Π·Π΄Π΅Π»Ρ‹ 17.11 ΠΈ 17.12.

17.14. АнимированиС ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΎΠ²

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

ВрСбуСтся Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ смСщСниС Π²ΠΈΠ΄ΠΎΠ².

РСшСниС

ΠŸΡ€ΠΈ смСщСнии Π²ΠΈΠ΄ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса UIView.

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

Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС iOS ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы выполнСния Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, срСди этих возмоТностСй Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ высокоуровнСвыС. Π‘Π°ΠΌΡ‹ΠΉ высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС обСспСчиваСтся Π²ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅ UIKit, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅. Π’ UIKit содСрТится нСкоторая низкоуровнСвая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Core Animation, прСдоставляСмая Π½Π°ΠΌ Π² Ρ„ΠΎΡ€ΠΌΠ΅ довольно Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ API, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π Π°Π±ΠΎΡ‚Π° с Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠ΅ΠΉ Π² UIKit начинаСтся с Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° класса beginAnimations: context:, относящСгося ΠΊ классу UIView. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ β€” это ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ имя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для вашСй Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ контСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ Π΄Π΅Π»Π΅Π³Π°Ρ‚ΠΎΠ². ВскорС ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Π½ΠΈΡ… ΠΎΠ±ΠΎΠΈΡ….

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ запуститС Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° beginAnimations: context:, ΠΎΠ½Π° Π½Π΅ Π½Π°Ρ‡Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ для этого потрСбуСтся Π΅Ρ‰Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ класса commitAnimations, относящийся ΠΊ классу UIView. ВычислСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π°Π΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ-Π²ΠΈΠ΄ΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ beginAnimations: context: ΠΈ commitAnimations (Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… этот Π²ΠΈΠ΄, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, пСрСмСщаСтся), Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠ΅ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Π²Ρ‹Π·ΠΎΠ²Π° commitAnimations. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

Как ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 17.4, я Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ» Π² ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΌΠΎΠ΅Π³ΠΎ прилоТСния рисунок Xcode.png. Π­Ρ‚ΠΎ ярлык Xcode, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я нашСл Π² ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°Ρ… Google (см. рис. 17.9). Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ Π²ΠΈΠ΄Π° (см. Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊ этой Π³Π»Π°Π²Π΅) я Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ этот рисунок Π² Π²ΠΈΠ΄Π΅ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠ° UIImageView, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ этот Π²ΠΈΠ΄ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ· Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π° экрана Π² Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΏΡ€Π°Π²Ρ‹ΠΉ ΡƒΠ³ΠΎΠ».

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠΌ эту Π·Π°Π΄Π°Ρ‡Ρƒ.

1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅. h-Ρ„Π°ΠΉΠ» вашСго ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π°.

2. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ экзСмпляр UIImageView ΠΊΠ°ΠΊ свойство ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ Π΅Π³ΠΎ xcodeImageView:


#import Β«ViewController.hΒ»

@interface ViewController ()


@property (nonatomic, strong) UIImageView *xcodeImageView;


@end

3. ΠšΠΎΠ³Π΄Π° Π²ΠΈΠ΄ загрузится, помСститС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Xcode.png Π² экзСмпляр UIImage:

β€” (void) viewDidLoad{

[super viewDidLoad];


UIImage *xcodeImage = [UIImage imageNamed:@"Xcode.png"];


self.xcodeImageView = [[UIImageView alloc]

initWithImage: xcodeImage];


/* ΠŸΡ€ΠΎΡΡ‚ΠΎ Π·Π°Π΄Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ»ΠΎΡΡŒ. */

[self.xcodeImageView setFrame: CGRectMake(0.0f,

0.0f,

100.0f,

100.0f)];


self.view.backgroundColor = [UIColor whiteColor];

[self.view addSubview: self.xcodeImageView];


}


4. ΠΠ° рис. 17.33 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π²ΠΈΠ΄, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° запускаСтся Π² симуляторС iOS.


Рис. 17.33. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π° с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-Π²ΠΈΠ΄


5. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²ΠΈΠ΄ появится Π½Π° экранС Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ экзСмпляра viewDidAppear: ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π°, приступим ΠΊ исполнСнию Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, относящСгося ΠΊ Π²ΠΈΠ΄Ρƒ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π­Ρ‚Π° анимация пСрСмСстит ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· исходной Ρ‚ΠΎΡ‡ΠΊΠΈ (Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ) Π² Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΏΡ€Π°Π²Ρ‹ΠΉ ΡƒΠ³ΠΎΠ». ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ убСдимся, Ρ‡Ρ‚ΠΎ анимация ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Π·Π° пятисСкундный ΠΏΠ΅Ρ€ΠΈΠΎΠ΄:


β€” (void) viewDidAppear:(BOOL)paramAnimated{


[super viewDidAppear: paramAnimated];


/* ΠΠ°Ρ‡ΠΈΠ½Π°Π΅ΠΌ с Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π°. */

[self.xcodeImageView setFrame: CGRectMake(0.0f,

0.0f,

100.0f,

100.0f)];


[UIView beginAnimations:@"xcodeImageViewAnimation"

context:(__bridge void *)self.xcodeImageView];


/* ΠŸΡΡ‚исСкундная анимация. */

[UIView setAnimationDuration:5.0f];


/* ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΄Π΅Π»Π΅Π³Π°Ρ‚Ρ‹ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. */

[UIView setAnimationDelegate: self];


[UIView setAnimationDidStopSelector:

@selector(imageViewDidStop: finished: context:)];


/* ΠΠ½ΠΈΠΌΠ°Ρ†ΠΈΡ заканчиваСтся Π² Π½ΠΈΠΆΠ½Π΅ΠΌ ΠΏΡ€Π°Π²ΠΎΠΌ ΡƒΠ³Π»Ρƒ. */

[self.xcodeImageView setFrame: CGRectMake(200.0f,

350.0f,

100.0f,

100.0f)];


[UIView commitAnimations];


}


6. Π”Π°Π»Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° imageViewDidStop: finished: context: для ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ вызывался UIKit ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° я просто Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽ нСсколько сообщСний, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ для запуска ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΈΠ½ΠΎΠΉ активности Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ окончания Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ:


β€” (void)imageViewDidStop:(NSString *)paramAnimationID

finished:(NSNumber *)paramFinished

context:(void *)paramContext{


NSLog(@"Animation finished.");


NSLog(@"Animation ID = %@", paramAnimationID);


UIImageView *contextImageView = (__bridge UIImageView *)paramContext;

NSLog(@"Image View = %@", contextImageView);


}


Π’Π΅ΠΏΠ΅Ρ€ΡŒ, запустив ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ отобразится Π²ΠΈΠ΄, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π½Π° рис. 17.33, Π½Π°Ρ‡Π½Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π² Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΏΡ€Π°Π²Ρ‹ΠΉ ΡƒΠ³ΠΎΠ» (рис. 17.34). На это ΡƒΠΉΠ΄Π΅Ρ‚ 5 сСкунд.


Рис. 17.34. АнимируСмоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΏΡ€Π°Π²Ρ‹ΠΉ Π½ΠΈΠΆΠ½ΠΈΠΉ ΡƒΠ³ΠΎΠ» экрана


ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ² Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° консоль ΠΈ доТдавшись окончания Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ тСкст:


Animation finished.

Animation ID = xcodeImageViewAnimation

Image View = <UIImageView: 0x8eaee20;

frame = (220 468; 100 100); opaque = NO;

userInteractionEnabled = NO;

layer = <CALayer: 0x8eaef10>>


А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΈ разбСрСмся, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΡ‹ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π»ΠΈ этот Π²ΠΈΠ΄ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π”Π°Π»Π΅Π΅ пСрСчислСны Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса, относящиСся ΠΊ UIView, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, занимаясь Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠ΅ΠΉ с UIKit.

β€’ beginAnimations: context: β€” запускаСт Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ. Π›ΡŽΠ±ΠΎΠ΅ Π°Π½ΠΈΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ свойств, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ примСняСтС ΠΊ Π²ΠΈΠ΄Π°ΠΌ послС Π²Ρ‹Π·ΠΎΠ²Π° этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° класса, Π±ΡƒΠ΄Π΅Ρ‚ Π²ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π² силу послС выполнСния Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ.

β€’ setAnimationDuration: β€” этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π°Π΄Π°Π΅Ρ‚ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π² сСкундах.

β€’ setAnimationDelegate: β€” Π·Π°Π΄Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ сообщСния Π΄Π΅Π»Π΅Π³Π°Ρ‚ΠΎΠ², ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ Π΄ΠΎ, Π²ΠΎ врСмя ΠΈΠ»ΠΈ послС Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. Если ΠΌΡ‹ Π·Π°Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄Π΅Π»Π΅Π³Π°Ρ‚Π°, это Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Π΄Π΅Π»Π΅Π³Π°Ρ‚Ρ‹ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹-установщики, относящиСся ΠΊ классу, примСняя ΠΈΡ… ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π²ΠΈΠ΄Π°. Π’Π°ΠΊ Π²Ρ‹ сообщаСтС UIKit, ΠΊΠ°ΠΊΠΈΠ΅ сСлСкторы Π² вашСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅-Π΄Π΅Π»Π΅Π³Π°Ρ‚Π΅ ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π΅Π»Π΅Π³Π°Ρ‚Π½Ρ‹Π΅ сообщСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ.

β€’ setAnimationDidStopSelector: β€” Π·Π°Π΄Π°Π΅Ρ‚ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅-Π΄Π΅Π»Π΅Π³Π°Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ порядкС:

1) ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ° NSString: здСсь Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ с Π½Π°Ρ‡Π°Π»ΠΎΠΌ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ класса beginAnimations: context:, относящСмуся ΠΊ классу UIView;

2) ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Β«Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡΒ» Ρ‚ΠΈΠΏΠ° NSNumber: этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ содСрТит Π² NSNumber логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘Ρ€Π΅Π΄Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния устанавливаСт Π΅Π³ΠΎ Π² YES, Ссли анимация Π±Ρ‹Π»Π° остановлСна Π² ΠΊΠΎΠ΄Π΅, Π½Π΅ успСв ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ. Если это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ NO, Ρ‚ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ анимация Π±Ρ‹Π»Π° Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²ΠΎΠ² воспроизвСдСна Π΄ΠΎ самого ΠΊΠΎΠ½Ρ†Π°;

3) ΠΊΠΎΠ½Ρ‚Скст Ρ‚ΠΈΠΏΠ° void *: это контСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ с Π½Π°Ρ‡Π°Π»ΠΎΠΌ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ пСрСдаСтся ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ класса beginAnimations: context:, относящСмуся ΠΊ классу UIView.

β€’ setAnimationWillStartSelector: β€” Π·Π°Π΄Π°Π΅Ρ‚ сСлСктор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° ΠΏΠ΅Ρ€Π΅Π΄ самым Π½Π°Ρ‡Π°Π»ΠΎΠΌ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. Π‘Π΅Π»Π΅ΠΊΡ‚ΠΎΡ€, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ этому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ класса, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π² Ρ‚Π°ΠΊΠΎΠΌ порядкС:

1) ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ° NSString: срСда Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния Π·Π°Π΄Π°Π΅Ρ‚ для этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ с Π½Π°Ρ‡Π°Π»ΠΎΠΌ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ класса beginAnimations: context:, относящСмуся ΠΊ классу UIView;

2) ΠΊΠΎΠ½Ρ‚Скст Ρ‚ΠΈΠΏΠ° void *: это контСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ с Π½Π°Ρ‡Π°Π»ΠΎΠΌ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ класса beginAnimations: context:, относящСмуся ΠΊ классу UIView.

β€’ setAnimationDelay: β€” Π·Π°Π΄Π°Π΅Ρ‚ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ для Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ (Π² сСкундах) ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π΅ Π½Π°Ρ‡Π°Π»ΠΎΠΌ. НапримСр, Ссли это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ установлСно Π² 3.0f, Ρ‚ΠΎ анимация Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· 3 сСкунды послС выполнСния этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

β€’ setAnimationRepeatCount: β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ количСство ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΎΠ² Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π² Π±Π»ΠΎΠΊΠ΅ ΠΊΠΎΠ΄Π°.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ извСстны Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса UIView, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΠ΅ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄Ρ‹, рассмотрим Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄Π° я создам Π΄Π²Π° Π²ΠΈΠ΄Π° с изобраТСниями (Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅), ΠΈ ΠΎΠ½ΠΈ появятся Π½Π° экранС Π² ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ врСмя, ΠΎΠ΄Π½ΠΎ Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ, Π΄Ρ€ΡƒΠ³ΠΎΠ΅ β€” Π² ΠΏΡ€Π°Π²ΠΎΠΌ Π½ΠΈΠΆΠ½Π΅ΠΌ (рис. 17.35).


Рис. 17.35. Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ начинаСтся анимация