Π Π°Π·Π΄Π΅Π»Ρ 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. ΠΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ