@end
@implementation ViewController
β (void)viewDidLoad {
[super viewDidLoad];
/* ΠΠ½ΡΡΠ°Π½ΡΠΈΡΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ. */
self.swipeGestureRecognizer = [[UISwipeGestureRecognizer alloc]
initWithTarget: self
action:@selector(handleSwipes:)];
/* ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°ΡΡ ΠΆΠ΅ΡΡΡ ΡΠΌΠ°Ρ ΠΈΠ²Π°Π½ΠΈΡ,
Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ ΡΠΏΡΠ°Π²Π° Π½Π°Π»Π΅Π²ΠΎ. */
self.swipeGestureRecognizer.direction =
UISwipeGestureRecognizerDirectionLeft;
/* ΠΡΠΆΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Π»Π΅Ρ. */
self.swipeGestureRecognizer.numberOfTouchesRequired = 1;
/* ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊ Π²ΠΈΠ΄Ρ. */
[self.view addGestureRecognizer: self.swipeGestureRecognizer];
}
Π Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ ΠΆΠ΅ΡΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ ΠΊΠ°ΠΊ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΠ΄Π½ΠΈΠΌ Π²ΠΈΠ΄ΠΎΠΌ, ΠΌΡ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π»ΠΈ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π²ΠΈΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΆΠ΅ΡΡ (self.swipeGestureRecognizer). Π ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅Β» Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΡΡΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΠ΅ΡΠΎΠ΄Π° handleSwipes:, Π²ΡΡΡΡΠΏΠ°ΡΡΠ΅Π³ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π»ΠΈ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ ΠΆΠ΅ΡΡΠΎΠ² ΡΠΌΠ°Ρ ΠΈΠ²Π°Π½ΠΈΡ.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
ΠΠ΅ΡΡ ΡΠΌΠ°Ρ ΠΈΠ²Π°Π½ΠΈΡ (ΡΠΊΠΎΠ»ΡΠΆΠ΅Π½ΠΈΡ) β ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ, ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΠΌΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»ΡΠΌΠΈ ΠΆΠ΅ΡΡΠΎΠ², Π²Ρ ΠΎΠ΄ΡΡΠΈΠΌΠΈ Π² ΡΠΎΡΡΠ°Π² iOS SDK. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠ°Π»ΡΡΠ΅Π² ΠΏΠΎ ΡΠΊΡΠ°Π½Ρ Π² ΡΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ. ΠΠ»Π°ΡΡ UISwipeGestureRecognizer, ΠΊΠ°ΠΊ ΠΈ Π»ΡΠ±ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»ΠΈ ΠΆΠ΅ΡΡΠΎΠ², Π½Π°ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡ ΠΊΠ»Π°ΡΡΠ° UIGestureRecognizer ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΊ Π½Π΅ΠΌΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΆΠ΅ΡΡΡ ΡΠΌΠ°Ρ ΠΈΠ²Π°Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»Π°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°Π»ΡΡΠ΅Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅ΡΠΆΠ°ΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΎΠ²Π΅ΡΡΠΈΡΡ ΠΆΠ΅ΡΡ ΡΠΌΠ°Ρ ΠΈΠ²Π°Π½ΠΈΡ. ΠΠ΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅, ΡΡΠΎ ΠΆΠ΅ΡΡΡ ΡΠΌΠ°Ρ ΠΈΠ²Π°Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΡΠΌΠΈ.
ΠΠ΅ΡΠΎΠ΄ handleSwipes:, ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ ΠΆΠ΅ΡΡΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
β (void) handleSwipes:(UISwipeGestureRecognizer *)paramSender{
if (paramSender.direction & UISwipeGestureRecognizerDirectionDown){
NSLog(@"Swiped Down.");
}
if (paramSender.direction & UISwipeGestureRecognizerDirectionLeft){
NSLog(@"Swiped Left.");
}
if (paramSender.direction & UISwipeGestureRecognizerDirectionRight){
NSLog(@"Swiped Right.");
}
if (paramSender.direction & UISwipeGestureRecognizerDirectionUp){
NSLog(@"Swiped Up.");
}
}
Π ΡΠ²ΠΎΠΉΡΡΠ²Π΅ direction ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠ° UISwipeGestureRecognizer ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ, ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ ΠΏΠΎΡΠ°Π·ΡΡΠ΄Π½ΡΠΌ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠΌ OR (ΠΠΠ). Π ΡΠ·ΡΠΊΠ΅ Objective-C ΠΎΠ½ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅ΡΡΡ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΡΠΎΠΉ (|). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΡΠΌΠΎΠ΅ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΡΠΌΠ°Ρ ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΌΡ Π»Π΅Π²ΠΎΠΌΡ ΡΠ³Π»Ρ ΡΠΊΡΠ°Π½Π°, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ UISwipeGestureRecognizerDirectionLeft ΠΈ UISwipeGestureRecognizerDirectionDown, ΠΏΡΠΈΠΌΠ΅Π½ΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ ΠΆΠ΅ΡΡΠΎΠ² Π·Π½Π°ΠΊΠΈ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΡΡ. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΆΠ΅ΡΡΡ ΡΠΌΠ°Ρ ΠΈΠ²Π°Π½ΠΈΡ, ΠΈΠ΄ΡΡΠΈΠ΅ ΡΠΏΡΠ°Π²Π° Π½Π°Π»Π΅Π²ΠΎ.
ΠΠ±ΡΡΠ½ΠΎ ΡΠΌΠ°Ρ ΠΈΠ²Π°Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠ°Π»ΡΡΠ΅ΠΌ, Π½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ numberOfTouchesRequired ΠΊΠ»Π°ΡΡΠ° UISwipeGestureRecognizer, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°Π»ΡΡΠ΅Π², Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΆΠ΅ΡΡ Π±ΡΠ» ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½.
10.2. ΠΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΆΠ΅ΡΡΠΎΠ² Π²ΡΠ°ΡΠ΅Π½ΠΈΡ
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ²Π΅ΡΠ½ΡΡΡ ΠΏΠ°Π»ΡΡΠ°ΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π½ΡΠΉ Π½Π° ΡΠΊΡΠ°Π½Π΅.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° UIRotationGestureRecognizer ΠΈ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΠ΅ Π΅Π³ΠΎ ΠΊ ΡΠ΅Π»Π΅Π²ΠΎΠΌΡ Π²ΠΈΠ΄Ρ:
β (void)viewDidLoad {
[super viewDidLoad];
self.helloWorldLabel = [[UILabel alloc] initWithFrame: CGRectZero];
self.helloWorldLabel.text = @"Hello, World!";
self.helloWorldLabel.font = [UIFont systemFontOfSize:16.0f];
[self.helloWorldLabel sizeToFit];
self.helloWorldLabel.center = self.view.center;
[self.view addSubview: self.helloWorldLabel];
self.rotationGestureRecognizer = [[UIRotationGestureRecognizer alloc]
initWithTarget: self
action:@selector(handleRotations:)];
[self.view addGestureRecognizer: self.rotationGestureRecognizer];
}
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
Π Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ ΠΆΠ΅ΡΡΠΎΠ² UIRotationGestureRecognizer, ΠΊΠ°ΠΊ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΈΠ· Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ, ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΆΠ΅ΡΡΠΎΠ² Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π΄Π΅Π»Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ Π² ΠΏΠΎΠ»Π½ΠΎΡΠΊΡΠ°Π½Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΈ Π²ΡΡΡΠ΅ΡΠ°Π΅Ρ Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΠΊΡΠ°Π½Π°, ΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, ΡΡΠΎ ΠΎΠ½ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ΄ΠΏΡΠ°Π²ΠΈΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ, ΠΏΠΎΠ²Π΅ΡΠ½ΡΠ² Π΅Π΅ Π½Π° Π΄ΠΈΡΠΏΠ»Π΅Π΅.
ΠΠ»Π°ΡΡ UIRotationGestureRecognizer ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ rotation, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π΅ ΡΡΠ΅ΠΏΠ΅Π½Ρ ΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΆΠ΅ΡΡΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΡΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π²ΡΡΠ°ΠΆΠ°ΡΡΡΡ Π² ΡΠ°Π΄ΠΈΠ°Π½Π°Ρ . ΠΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠ°Π»ΡΡΠ΅Π² (UIGestureRecognizerStateBegan) ΠΈ ΠΈΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (UIGestureRecognizerStateEnded).
Π§ΡΠΎΠ±Ρ Π²ΡΠ°ΡΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π½Π°ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΡ ΠΊΠ»Π°ΡΡΠ° UIView, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ rotation ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ ΠΆΠ΅ΡΡΠΎΠ² Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ CGAffineTransformMakeRotation, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»Π° Π°ΡΡΠΈΠ½Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅.
ΠΠΎΠ΄, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π² ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π΅ Β«Π Π΅ΡΠ΅Π½ΠΈΠ΅Β» Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°, ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π²ΠΈΠ΄Π°) ΠΊ ΡΠ΅Π»ΠΈ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ ΠΆΠ΅ΡΡΠΎΠ² Π²ΡΠ°ΡΠ΅Π½ΠΈΡ. Π¦Π΅Π»Π΅Π²ΠΎΠΉ ΡΠ΅Π»Π΅ΠΊΡΠΎΡ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ handleRotations: β ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ. ΠΠΎ ΠΏΡΠ΅ΠΆΠ΄Π΅, ΡΠ΅ΠΌ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΡΡΠΎΠΌΡ, ΠΈΠ·ΡΡΠΈΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π²ΠΈΠ΄Π°:
#import Β«ViewController.hΒ»
@interface ViewController ()
@property (nonatomic, strong)
UIRotationGestureRecognizer *rotationGestureRecognizer;
@property (nonatomic, strong)
UILabel *helloWorldLabel;
/* ΠΠ· ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ ΠΌΠ΅ΡΠΊΠΈ nonatomic
ΠΈ unsafe_unretained. ΠΠΌΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ
Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π΄Π»Ρ Π½Π°Ρ ΠΎΠ±Π΅ ΡΡΠΈ ΠΌΠ΅ΡΠΊΠΈ. */
@property (nonatomic, unsafe_unretained)
CGFloat rotationAngleInRadians;
@end
@implementation ViewController
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, Π·Π° ΡΡΠΎ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΡΡΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ΠΈ ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ:
β’ helloWorldLabel β ΡΡΠΎ ΠΌΠ΅ΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π½Π° Π²ΠΈΠ΄Π΅ Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ Π²ΠΈΠ΄Π°. ΠΠΎΡΠΎΠΌ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΊΠΎΠ΄ Π΄Π»Ρ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΌΠ΅ΡΠΊΠΈ. ΠΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠ°Π½Π΅Ρ ΡΠΎΠ²Π΅ΡΡΠ°ΡΡ Π²ΡΠ°ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΆΠ΅ΡΡΡ Π½Π° Π²ΠΈΠ΄Π΅, ΠΎΠ±Π»Π°Π΄Π°ΡΡΠ΅ΠΌ ΡΡΠΎΠΉ ΠΌΠ΅ΡΠΊΠΎΠΉ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ Π²ΠΈΠ΄Π΅ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π²ΠΈΠ΄Π°);
β’ rotationGestureRecognizer β ΡΡΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ ΠΆΠ΅ΡΡΠΎΠ² Π²ΡΠ°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΏΠΎΠ·ΠΆΠ΅ Π²ΡΠ΄Π΅Π»ΠΈΠΌ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ;
β’ rotationAngleInRadians β ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΠΎΡΠ½ΡΠΉ ΡΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡΠΎΡΠ° ΠΌΠ΅ΡΠΊΠΈ. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π² Π½ΡΠ»Ρ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ³Π»Ρ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ, ΡΠΎΠΎΠ±ΡΠ°Π΅ΠΌΡΠ΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Π΅ΠΌ, ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠ°ΠΆΠ΄ΡΠΌ Π½ΠΎΠ²ΡΠΌ ΠΏΡΡΠΊΠΎΠΌ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π· ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ ΠΆΠ΅ΡΡΠΎΠ² Π²ΡΠ°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ UIGestureRecognizerStateEnded. Π ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π· ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΆΠ΅ΡΡΠ° ΠΌΡ ΡΡΠΌΠΌΠΈΡΡΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΈ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΠ»ΡΡΠΈΠ² Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΎΠ±ΡΠΈΠΉ ΡΠ³ΠΎΠ» Π²ΡΠ°ΡΠ΅Π½ΠΈΡ.
Π Π°Π·ΠΌΠ΅Ρ ΠΌΠ΅ΡΠΊΠΈ ΠΈ Π΅Π΅ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠΎΡΠΊΠ° ΠΌΠΎΠ³ΡΡ Π²ΡΠ±ΠΈΡΠ°ΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π½Π΅ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠΉ ΠΌΠ΅ΡΠΊΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΠΏΡΡΠ°Π΅ΠΌΡΡ Π²ΡΠ°ΡΠ°ΡΡ ΠΌΠ΅ΡΠΊΡ Π²ΠΎΠΊΡΡΠ³ Π΅Π΅ ΡΠ΅Π½ΡΡΠ° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, Π² ΠΊΠ°ΠΊΠΎΠΉ ΡΠ°ΡΡΠΈ Π²ΠΈΠ΄Π° ΠΎΠ½Π° ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π°. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π²Π°ΠΆΠ½ΡΠΉ Π°ΡΠΏΠ΅ΠΊΡ Π·Π΄Π΅ΡΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΊΠΈ Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ Π²ΠΈΠ΄Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠ΅Π»ΡΠΌΠΈ (ΡΠΎ Π΅ΡΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ), ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ°Ρ Π΅Π΅ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°. ΠΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π½Π° ΠΈΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ , ΠΊΡΠΎΠΌΠ΅ iPhone ΠΈ iPad, ΠΌΠ΅ΡΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΎΡΠΊΠ°Ρ ΡΠΊΡΠ°Π½Π°.
ΠΡΠΈΠΌΠ΅Π½ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΌΠ΅ΡΠΊΠΈ center ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ ΡΡΡ ΡΠΎΡΠΊΡ Π² ΡΠ΅Π½ΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΌΠ»ΡΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π°, ΠΌΡ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌ ΠΏΠΎ ΡΠ΅Π½ΡΡΡ ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΌΠΎΠΉ ΠΌΠ΅ΡΠΊΠΈ. ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΊ Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠ΅ΡΠΊΠ΅, ΡΡΠ°Π½Π΅Ρ Π²ΡΠ°ΡΠ°ΡΡ ΠΌΠ΅ΡΠΊΡ Π²ΠΎΠΊΡΡΠ³ Π΅Π΅ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ. Π Π΅ΡΠ»ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΌΠ΅ΡΠΊΠΈ Π²ΡΡΠΎΠ²Π½Π΅Π½ΠΎ ΠΏΠΎ Π»Π΅Π²ΠΎΠΌΡ ΠΈΠ»ΠΈ ΠΏΠΎ ΠΏΡΠ°Π²ΠΎΠΌΡ ΠΊΡΠ°Ρ ΠΈ Π΅Π΅ ΠΈΡΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΡ ΡΠΈΡΠ΅, ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ (Π±Π΅Π· ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ), ΡΠΎ Π²ΡΠ°ΡΠ°ΡΡΡΡ ΡΠ°ΠΊΠ°Ρ ΠΌΠ΅ΡΠΊΠ° Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π½Π΅Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈ Π½Π΅ Π²ΠΎΠΊΡΡΠ³ ΡΠ΅Π½ΡΡΠ°. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π»ΡΠ±ΠΎΠΏΡΡΠ½ΠΎ, ΠΊΠ°ΠΊ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π²ΡΡΠΎΠ²Π½ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΌΠ΅ΡΠΊΠΈ ΠΏΠΎ Π»Π΅Π²ΠΎΠΌΡ ΠΈΠ»ΠΈ ΠΏΡΠ°Π²ΠΎΠΌΡ ΠΊΡΠ°Ρ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ.
ΠΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π΅ Β«Π Π΅ΡΠ΅Π½ΠΈΠ΅Β» Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π½Π°ΠΌΠΈ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ ΠΆΠ΅ΡΡΠΎΠ² Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Ρ handleRotations:. ΠΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°:
β (void) handleRotations:(UIRotationGestureRecognizer *)paramSender{
if (self.helloWorldLabel == nil){
return;
}
/* ΠΠ΅ΡΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΈ ΡΡΠΌΠΌΠΈΡΡΠ΅ΠΌ Π΅Π³ΠΎ Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌ