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

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

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

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

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ image 1, Π° ΠΈΠ· ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ β€” image 2.

Как ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ, Π² этом ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ собираСмся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Π²Π° изобраТСния, Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ Π»Π΅Π²ΠΎΠΌ ΠΈ ΠΏΡ€Π°Π²ΠΎΠΌ Π½ΠΈΠΆΠ½Π΅ΠΌ ΡƒΠ³Π»Π°Ρ…. Π”Π°Π»Π΅Π΅ image 1 станСт Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΊ image 2 ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π½Π° протяТСнии 3 сСкунд, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ исчСзнСт. Когда image 1 Π½Π°Ρ‡Π½Π΅Ρ‚ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅, станСт Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ ΠΈ image 2 β€” ΠΎΠ½ΠΎ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ Π»Π΅Π²Ρ‹ΠΉ ΡƒΠ³ΠΎΠ» экрана, Π³Π΄Π΅ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ image 1. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ анимация изобраТСния image 2 Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»Π°ΡΡŒ Π·Π° 3 сСкунды ΠΈ ΠΎΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ исчСзло. Когда Π²Ρ‹ запуститС этот ΠΊΠΎΠ΄ Π½Π° устройствС ΠΈΠ»ΠΈ симуляторС iOS, такая анимация Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ классно. Π’Π΅ΠΏΠ΅Ρ€ΡŒ расскаТу, ΠΊΠ°ΠΊ всС это Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

1. Π’ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части. m-Ρ„Π°ΠΉΠ»Π° нашСго ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π΄Π²Π° Π²ΠΈΠ΄Π° с изобраТСниями:


@interface ViewController ()

@property (nonatomic, strong) UIImageView *xcodeImageView1;

@property (nonatomic, strong) UIImageView *xcodeImageView2;

@end


@implementation ViewController


2. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ экзСмпляра viewDidLoad, относящСмся ΠΊ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ вашСго Π²ΠΈΠ΄Π°, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΎΠ±Π° этих Π²ΠΈΠ΄Π° с изобраТСниями ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ ΠΈΡ… Π² основной Π²ΠΈΠ΄:


β€” (CGRect) bottomRightRect{

CGRect endRect;

endRect.origin.x = self.view.bounds.size.width β€” 100;

endRect.origin.y = self.view.bounds.size.height β€” 100;

endRect.size = CGSizeMake(100.0f, 100.0f);

return endRect;

}

β€” (void) viewDidLoad{

[super viewDidLoad];


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


self.xcodeImageView1 = [[UIImageView alloc]

initWithImage: xcodeImage];


self.xcodeImageView2 = [[UIImageView alloc]

initWithImage: xcodeImage];


/* ΠŸΡ€ΠΎΡΡ‚ΠΎ Π·Π°Π΄Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ изобраТСния ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ»ΠΈΡΡŒ. */

[xcodeImageView1 setFrame: CGRectMake(0.0f,

0.0f,

100.0f,

100.0f)];


[self.xcodeImageView2 setFrame: [self bottomRightRect]];


self.view.backgroundColor = [UIColor whiteColor];

[self.view addSubview: self.xcodeImageView1];

[self.view addSubview: self.xcodeImageView2];


}


3. Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ для нашСго ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся startTopLeftImageViewAnimation. Как понятно ΠΈΠ· названия[12], Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ для изобраТСния image 1, пСрСмСщая Π΅Π³ΠΎ ΠΈΠ· Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π° экрана Π² Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΏΡ€Π°Π²Ρ‹ΠΉ, Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΈΡΡ‡Π΅Π·Π°Ρ‚ΡŒ. Π’Π°ΠΊΠΎΠ΅ исчСзновСниС достигаСтся установкой Π°Π»ΡŒΡ„Π°-значСния Π² 0:


β€” (void) startTopLeftImageViewAnimation{


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

[self.xcodeImageView1 setFrame: CGRectMake(0.0f,

0.0f,

100.0f,

100.0f)];

[self.xcodeImageView1 setAlpha:1.0f];


[UIView beginAnimations:@"xcodeImageView1Animation"

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


/* Π’рСхсСкундная анимация */

[UIView setAnimationDuration:3.0f];


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

[UIView setAnimationDelegate: self];


[UIView setAnimationDidStopSelector:

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


/* Π—Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅ΠΌ Π² Π½ΠΈΠΆΠ½Π΅ΠΌ ΠΏΡ€Π°Π²ΠΎΠΌ ΡƒΠ³Π»Ρƒ. */

[self.xcodeImageView1 setFrame: CGRectMake(220.0f,

350.0f,

100.0f,

100.0f)];


[self.xcodeImageView1 setAlpha:0.0f];


[UIView commitAnimations];


}


4. ΠšΠΎΠ³Π΄Π° анимация ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΈΠ· этих Π²ΠΈΠ΄ΠΎΠ² остановится, ΠΌΡ‹ ΡƒΠ΄Π°Π»ΠΈΠΌ Π΄Π°Π½Π½Ρ‹ΠΉ Π²ΠΈΠ΄ ΠΈΠ· ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π²ΠΈΠ΄ΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ большС Π² Π½Π΅ΠΌ Π½Π΅ нуТдаСмся. Как Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ startTopLeftImageViewAnimation, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ сСлСктор Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ класса setAnimationDidStopSelector:, относящСмуся ΠΊ классу UIView. Π­Ρ‚ΠΎΡ‚ сСлСктор Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ послС окончания Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ image 1 (ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Ρ€Π°Π½Π΅Π΅) ΠΈ image 2 (ΠΊΠ°ΠΊ ΠΌΡ‹ вскорС ΡƒΠ²ΠΈΠ΄ΠΈΠΌ). Π’ΠΎΡ‚ рСализация этого сСлСктора Π΄Π΅Π»Π΅Π³Π°Ρ‚Π°:


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

finished:(NSNumber *)paramFinished

context:(void *)paramContext{


UIImageView *contextImageView = (__bridge UIImageView *)paramContext;

[contextImageView removeFromSuperview];


}


5. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π°ΠΌ понадобится ΠΌΠ΅Ρ‚ΠΎΠ΄ для анимирования image 2. ΠœΠ΅ΠΆΠ΄Ρƒ написаниСм Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для image 2 ΠΈ image 1 Π΅ΡΡ‚ΡŒ нСбольшая Ρ€Π°Π·Π½ΠΈΡ†Π°. Π― Ρ…ΠΎΡ‡Ρƒ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ image 2, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ доТидаясь Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ image 1. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ссли анимация image 1 Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π·Π° 3 сСкунды, Ρ‚ΠΎ я Π½Π°Ρ‡Π½Ρƒ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ image 2 со Π²Ρ‚ΠΎΡ€ΠΎΠΉ сСкунды Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ image 1. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, анимация image 2 начнСтся Π΅Ρ‰Π΅ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ image 1 Π΄ΠΎΠΉΠ΄Π΅Ρ‚ Π΄ΠΎ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π° экрана ΠΈ исчСзнСт. Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, я ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»ΡŽ Π½Π°Ρ‡Π°Π»ΠΎ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ для ΠΎΠ±ΠΎΠΈΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ врСмя, Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ image 2 ΠΏΠΎΡΡ‚Π°Π²Π»ΡŽ Π΄Π²ΡƒΡ…ΡΠ΅ΠΊΡƒΠ½Π΄Π½ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ. Π˜Ρ‚Π°ΠΊ, Ссли ΠΎΠ±Π΅ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ начнутся Π² час дня, Ρ‚ΠΎ для изобраТСния image 1 Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ 13:00:00, Π° ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ β€” 13:00:03. Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ значСния image 2 Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π²Π½Ρ‹ 13:00:02 ΠΈ 13:00:05. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ анимация image 2:


β€” (void) startBottomRightViewAnimationAfterDelay:(CGFloat)paramDelay{


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

[self.xcodeImageView2 setFrame: [self bottomRightRect]];


[self.xcodeImageView2 setAlpha:1.0f];


[UIView beginAnimations:@"xcodeImageView2Animation"

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


/* Π’рСхсСкундная анимация */

[UIView setAnimationDuration:3.0f];

[UIView setAnimationDelay: paramDelay];


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

[UIView setAnimationDelegate: self];


[UIView setAnimationDidStopSelector:

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


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

[self.xcodeImageView2 setFrame: CGRectMake(0.0f,

0.0f,

100.0f,

100.0f)];


[self.xcodeImageView2 setAlpha:0.0f];


[UIView commitAnimations];


}

6. Π˜ послСднСС, Π½ΠΎ Π½Π΅ΠΌΠ°Π»ΠΎΠ²Π°ΠΆΠ½ΠΎΠ΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΈΠ΄ отобразится, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ startTopLeftImageViewAnimation ΠΈ startBottomRightViewAnimationAfterDelay::

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


[super viewDidAppear: paramAnimated];

[self startTopLeftImageViewAnimation];

[self startBottomRightViewAnimationAfterDelay:2.0f];


}

17.15. АнимированиС ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΎΠ²

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

ВрСбуСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄Ρ‹ ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² сторону увСличСния ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ.

РСшСниС

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ для Π²ΠΈΠ΄Π° Π°Ρ„Ρ„ΠΈΠ½Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ UIView для сопровоТдСния ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠ΅ΠΉ.

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

ΠŸΠ΅Ρ€Π΅Π΄ дальнСйшСй Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π» 17.14.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄, анимируя Π΅Π³ΠΎ ΠΏΡ€ΠΈ этом, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ Π²ΠΈΠ΄Ρƒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π² Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ (см. Ρ€Π°Π·Π΄Π΅Π» 17.12), Π»ΠΈΠ±ΠΎ просто ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ высоту ΠΈ/ΠΈΠ»ΠΈ ΡˆΠΈΡ€ΠΈΠ½Ρƒ Π²ΠΈΠ΄Π°.

Рассмотрим, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π± Π²ΠΈΠ΄Π°, примСняя ΠΊ Π½Π΅ΠΌΡƒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ:


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

[super viewDidAppear: paramAnimated];


/* ΠŸΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π²ΠΈΠ΄ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ основного Π²ΠΈΠ΄Π° Π΄Π°Π½Π½ΠΎΠ³ΠΎ

ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π°. */

self.xcodeImageView.center = self.view.center;


/* Π£Π±Π΅ΠΆΠ΄Π°Π΅ΠΌΡΡ, Ρ‡Ρ‚ΠΎ ΠΊ этому Π²ΠΈΠ΄Ρƒ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ся Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ

прСобразования сдвига. */

self.xcodeImageView.transform = CGAffineTransformIdentity;


/* ΠΠ°Ρ‡ΠΈΠ½Π°Π΅ΠΌ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ. */

[UIView beginAnimations: nil

context: NULL];


/* ΠΠ½ΠΈΠΌΠ°Ρ†ΠΈΡ продлится 5 ΡΠ΅ΠΊΡƒΠ½Π΄. */

[UIView setAnimationDuration:5.0f];


/* Π’Π΄Π²ΠΎΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Π²ΠΈΠ΄ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ Π² Π΄Π»ΠΈΠ½Ρƒ. */

self.xcodeImageView.transform = CGAffineTransformMakeScale(2.0f,

2.0f);


/* Π’ыполняСм Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ. */

[UIView commitAnimations];


}


Π’ этом ΠΊΠΎΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Ρ„Ρ„ΠΈΠ½Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²ΠΈΠ΄ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ становится Π² Π΄Π²Π° Ρ€Π°Π·Π° большС ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с исходными Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ. Π‘Π°ΠΌΠΎΠ΅ большоС достоинство Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Ρ…ΠΎΠ΄Π΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π½Π°Ρ‡Π°Π»ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ (Ρ†Π΅Π½Ρ‚Ρ€) ΠΏΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠΈ совпадаСт с Π½Π°Ρ‡Π°Π»ΠΎΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ (Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ) самого Π²ΠΈΠ΄Π°. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ†Π΅Π½Ρ‚Ρ€ вашСго Π²ΠΈΠ΄Π° располоТСн Π½Π° экранС Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ (100; 100), Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄, Π²Π΄Π²ΠΎΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ² Π΅Π³ΠΎ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ высоту. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ†Π΅Π½Ρ‚Ρ€ Π²ΠΈΠ΄Π° Ρ‚Π°ΠΊ ΠΈ останСтся Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ (100; 100), Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ сам Π²ΠΈΠ΄ увСличится Π² Π΄Π²Π° Ρ€Π°Π·Π°. Если Π±Ρ‹ ΠΌΡ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π»ΠΈ Π²ΠΈΠ΄, сначала ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π΅ΠΌΡƒ ΡˆΠΈΡ€ΠΈΠ½Ρ‹, Π° ΠΏΠΎΡ‚ΠΎΠΌ высоты, Ρ‚ΠΎ Π²ΠΈΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ получился Π±Ρ‹ Π² ΠΈΡ‚ΠΎΠ³Π΅, находился Π±Ρ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ Π² Ρ‚ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ экрана, Π³Π΄Π΅ Π±Ρ‹Π» исходный Π²ΠΈΠ΄. Π­Ρ‚ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ, измСняя высоту ΠΈ ΡˆΠΈΡ€ΠΈΠ½Ρƒ Ρ€Π°ΠΌΠΎΠΊ Π²ΠΈΠ΄Π°, Π²Ρ‹ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ измСняСтС значСния x ΠΈ y ΠΊΠΎΠ½Ρ‚ΡƒΡ€Π° Π²ΠΈΠ΄Π°, Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹ Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅Ρ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²ΠΈΠ΄ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ своСго Ρ†Π΅Π½Ρ‚Ρ€Π°. Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ этой ΠΊΠ½ΠΈΠ³ΠΈ, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с этой Π·Π°Π΄Π°Ρ‡Π΅ΠΉ β€” ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π²Π°ΠΌ удастся Π½Π°ΠΉΡ‚ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Π”Π°ΠΌ ΠΎΠ΄Π½Ρƒ подсказку: ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΄Π²Π΅ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. Одна ΠΈΠ· Π½ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ ΠΈ ΡˆΠΈΡ€ΠΈΠ½Ρƒ Π²ΠΈΠ΄Π°, Π° другая β€” ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Ρ†Π΅Π½Ρ‚Ρ€ Π²ΠΈΠ΄Π°.