Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ clipsToBounds Π²ΠΈΠ΄Π° UIView ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, Π΄ΠΎΠ»ΠΆΠ½Ρ Π»ΠΈ Β«ΠΏΠΎΠ΄ΠΎΠΊΠ½Π°Β» ΡΡΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΠΎΠ±ΡΠ΅Π·Π°ΡΡΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π²ΡΡ ΠΎΠ΄ΡΡ Π·Π° Π³ΡΠ°Π½ΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΠΈΡ Π²ΠΈΠ΄Π°. ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Ρ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΡΡ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ Β«ΠΏΠΎΠ΄ΠΎΠΊΠ½Π°Β» ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π½Π΅ Π±ΡΠ΄ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π²Π½Π΅ Π³ΡΠ°Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΠΈΡ Π²ΠΈΠ΄Π° (ΠΈΠ»ΠΈ ΡΡΠΎ ΠΎΠ½ΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π½Π΅ΠΏΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π±ΡΠ΄ΡΡ Π²ΡΡ ΠΎΠ΄ΠΈΡΡ Π·Π° Π΅Π³ΠΎ Π³ΡΠ°Π½ΠΈΡΡ β Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ).
ΠΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π² Π³ΡΠ°Π½ΠΈΡΠ°Ρ Π²ΠΈΠ΄Π° Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΡΠΎΠ½ ΡΡΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ, Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠ΅ΠΆΠΈΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ UIViewContentModeScaleAspectFit:
β (void)viewDidLoad{
[super viewDidLoad];
UIImage *macBookAir = [UIImage imageNamed:@"MacBookAir"];
self.myImageView = [[UIImageView alloc] initWithFrame: self.view.bounds];
self.myImageView.contentMode = UIViewContentModeScaleAspectFit;
self.myImageView.image = macBookAir;
self.myImageView.center = self.view.center;
[self.view addSubview: self.myImageView];
}
ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ°Π· ΡΠ°ΠΊΠΎΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΡ Π΄ΠΎΠ±ΠΈΠ²Π°Π»ΠΈΡΡ (ΡΠΈΡ. 1.62).
Π ΠΈΡ. 1.62. Π’Π°ΠΊΠΎΠ΅ ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΡΠΎΠ½ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π½Π°ΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ
1.23. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ UIScrollView
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
ΠΠΌΠ΅Π΅ΡΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅, Π½ΠΎ Π²ΡΡ ΡΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΡΠΊΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°, ΡΠ΅ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ Π΄ΠΈΡΠΏΠ»Π΅ΠΉ Π½Π°ΡΠ΅Π³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΠΊΠ»Π°ΡΡΠΎΠΌ UIScrollView.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
ΠΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΡΠΉ Π²ΠΈΠ΄ (Scroll View) β ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΡ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈ Π΄Π΅Π»Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ iOS ΡΠ°ΠΊΠΎΠΉ ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ Π²ΠΈΠ΄Ρ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π² Π»ΡΠ±ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ . ΠΡ ΡΠΆΠ΅ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ Clock (Π§Π°ΡΡ) ΠΈ Contacts (ΠΠΎΠ½ΡΠ°ΠΊΡΡ). ΠΡ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°ΡΡ Π²Π²Π΅ΡΡ ΠΈ Π²Π½ΠΈΠ·? ΠΠ°, Π² ΡΡΠΎΠΌ ΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΌΠ°Π³ΠΈΡ, ΠΏΡΠΈΡΡΡΠ°Ρ Π²ΠΈΠ΄Π°ΠΌ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠΉΠ΄Π΅Ρ ΡΠ΅ΡΡ Π² ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅.
Π ΡΡΡΠ½ΠΎΡΡΠΈ, Π΅ΡΡΡ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄Π½Π° Π±Π°Π·ΠΎΠ²Π°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠ²ΠΎΠΈΡΡ Π² ΡΠ²ΡΠ·ΠΈ Ρ Π²ΠΈΠ΄Π°ΠΌΠΈ, ΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°ΡΡ, β ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ. Π£ΡΠΈΡΡΠ²Π°Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ, ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΡΠΉ Π²ΠΈΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΊ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π² Π½Π΅ΠΌ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ. Π Π°Π·ΠΌΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ β ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° CGSize, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²ΡΡΠΎΡΡ ΠΈ ΡΠΈΡΠΈΠ½Ρ ΡΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²ΠΈΠ΄ Ρ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΡΠΌ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠΎΠΌ. ΠΠΈΠ΄ Ρ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΡΠΌ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ· Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠΌ UIView. ΠΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π²Π°ΡΠΈ Π²ΠΈΠ΄Ρ ΠΊ Π²ΠΈΠ΄Π°ΠΌ Ρ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΡΠΌ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠΎΠΌ, ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ addSubview:. ΠΡΠ°Π²Π΄Π°, Π½ΡΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π΄Π»Ρ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π·Π°Π΄Π°Π½ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°ΡΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ.
ΠΠ°ΠΉΠ΄Π΅ΠΌ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π±ΠΎΠ»ΡΡΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ ΠΈ Π·Π°Π³ΡΡΠ·ΠΈΠΌ Π΅Π΅ Π² Π²ΠΈΠ΄ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π― Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡ ΡΠΎΠΉ ΡΠ°ΠΌΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΎΠΉ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 1.22: MacBook Air. ΠΠΎΠ±Π°Π²Π»Ρ Π΅Π΅ Π² Π²ΠΈΠ΄ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠ΅ΡΡ Π² Π²ΠΈΠ΄ Ρ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΡΠΌ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠΎΠΌ. ΠΠΎΡΠΎΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ contentSize ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΡΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° ΡΠ°Π²Π½Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (Π²ΡΡΠΎΡΠ΅ ΠΈ ΡΠΈΡΠΈΠ½Π΅). ΠΠ°ΡΠ½Π΅ΠΌ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΉΠ»Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π½Π°ΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π°:
#import Β«ViewController.hΒ»
@interface ViewController ()
@property (nonatomic, strong) UIScrollView *myScrollView;
@property (nonatomic, strong) UIImageView *myImageView;
@end
@implementation ViewController
Π ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ Π²ΠΈΠ΄ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π²Π½ΡΡΡΡ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°:
β (void)viewDidLoad{
[super viewDidLoad];
UIImage *imageToLoad = [UIImage imageNamed:@"MacBookAir"];
self.myImageView = [[UIImageView alloc] initWithImage: imageToLoad];
self.myScrollView = [[UIScrollView alloc] initWithFrame: self.view.bounds];
[self.myScrollView addSubview: self.myImageView];
self.myScrollView.contentSize = self.myImageView.bounds.size;
[self.view addSubview: self.myScrollView];
}
ΠΡΠ»ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΡΠΌΡΠ»ΡΡΠΎΡΠ΅ iOS, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΈ ΠΏΠΎ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ, ΠΈ ΠΏΠΎ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ. ΠΡΠ½ΠΎΠ²Π½Π°Ρ Π·Π°Π΄Π°ΡΠ° Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ β Π½Π°ΠΉΡΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π²Π΅Π»ΠΈΠΊΠ° ΠΈ Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡΡ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΡΠΊΡΠ°Π½Π°. Π’Π°ΠΊ, Π΅ΡΠ»ΠΈ Π²Π·ΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 20 Γ 20 ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ², ΡΠΎ ΠΎΡΠΎΠ±ΠΎΠΉ ΠΏΠΎΠ»ΡΠ·Ρ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΠΊΡΡΡΠΊΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ. ΠΠΎΠ΄ΠΎΠ±Π½ΡΡ, ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ ΠΈ Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ Π² ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΡΠΉ Π²ΠΈΠ΄, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΡΠ°ΠΊΠΎΠΉ Π²ΠΈΠ΄ ΡΠ΅ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π΅Π½. ΠΡΠΎΠΊΡΡΡΠΈΠ²Π°ΡΡ Π±ΡΠ΄Π΅Ρ Π½Π΅ΡΠ΅Π³ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΊΡΠ°Π½Π° Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
UIScrollView ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΡΠ°ΠΊΠΎΠΉ ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ ΡΠ°ΠΊΠΎΠΉ Π²ΠΈΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π°ΠΆΠ½ΡΡ ΡΠΎΠ±ΡΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π΅Π»Π΅Π³Π°ΡΠ°. ΠΠ΅Π»Π΅Π³Π°Ρ Π΄Π»Ρ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΠ²Π΅ΡΠ°ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° UIScrollViewDelegate. ΠΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ Π² ΡΡΠΎΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π΅:
β’ scrollViewDidScroll: β Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΡΡΡ;
β’ scrollViewWillBeginDecelerating: β Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π²ΠΈΠ΄Π° ΠΈ ΠΎΡΡΡΠ²Π°Π΅Ρ ΠΏΠ°Π»Π΅Ρ ΠΎΡ ΡΠ΅Π½ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΊΡΠ°Π½Π° Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ, ΠΊΠ°ΠΊ Π²ΠΈΠ΄ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°ΡΡΡΡ;
β’ scrollViewDidEndDecelerating: β Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΉΡΡ Π² Π²ΠΈΠ΄Π΅, Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ;
β’ scrollViewDidEndDragging: willDecelerate: β Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π² ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠΌ Π²ΠΈΠ΄Π΅. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠ΅Π½Ρ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ scrollViewDidEndDecelerating:, Π½ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΊΠΈΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΠΈ Π½Π΅ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Ρ Π΅Π³ΠΎ. ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠΊΠΎΡΠ½ΡΡΡΡΡ ΠΏΠ°Π»ΡΡΠ΅ΠΌ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΠΏΠ°Π»Π΅Ρ Π² Π΄ΡΡΠ³ΡΡ ΡΠΎΡΠΊΡ Π½Π° ΡΠΊΡΠ°Π½Π΅, Π° ΠΏΠΎΡΠΎΠΌ ΠΎΡΠΎΡΠ²Π°ΡΡ ΠΏΠ°Π»Π΅Ρ ΠΎΡ ΡΠΊΡΠ°Π½Π°, Π½Π΅ ΡΠ΄Π²ΠΈΠ½ΡΠ² ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π½ΠΈ Π½Π° ΠΌΠΈΠ»Π»ΠΈΠΌΠ΅ΡΡ. ΠΡΠΈΠΌ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΏΡΠΎΠΊΡΡΡΠΊΠΈ. ΠΡΠΎΠΊΡΡΡΠΊΠ° Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅, Π½ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Β«ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΈΠΌΠΏΡΠ»ΡΡΒ», ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΠΉ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ ΡΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ°Π»Π΅Ρ Ρ ΡΠΊΡΠ°Π½Π°, ΠΏΠΎΠΊΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΅ΡΠ΅ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΡΡΡ. Π’ΠΎ Π΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΏΠ°Π»Π΅Ρ, Π½Π΅ Π΄ΠΎΠΆΠ΄Π°Π²ΡΠΈΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΊΡΡΡΠΊΠΈ. ΠΠ΅ΡΠ΅ΡΠ°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΡΡ Ρ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π²Ρ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΠ΅ ΠΏΠ΅Π΄Π°Π»Ρ Π³Π°Π·Π° Π² ΠΌΠ°ΡΠΈΠ½Π΅ ΠΈΠ»ΠΈ ΠΏΠ΅Π΄Π°Π»Ρ Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄Π°. ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ ΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΡΡ ΠΏΡΠΎΠΊΡΡΡΠΊΡ Ρ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΠΈΠ½Π΅ΡΡΠΈΠΈ Π½Π° ΠΌΠ°ΡΠΈΠ½Π΅ ΠΈΠ»ΠΈ Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄Π΅.
Π‘Π΄Π΅Π»Π°Π΅ΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π΅Π΅. Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠΎΠ²Π΅Π½Ρ ΡΡΠΊΠΎΡΡΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π² Π½Π°ΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ (ΡΡΠΎΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«Π°Π»ΡΡΠ°-ΡΡΠΎΠ²Π΅Π½ΡΒ» ΠΈΠ»ΠΈ Β«Π°Π»ΡΡΠ°-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Β») ΡΠ°Π²Π½ΡΠΌ 0.50f (ΠΏΠΎΠ»ΡΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ) Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΏΡΠΎΠΊΡΡΡΠΊΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΈ Π²Π΅ΡΠ½ΡΡΡ ΡΡΠΎΡ ΡΡΠΎΠ²Π΅Π½Ρ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ 1.0f (Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ) ΠΊ ΠΌΠΎΠΌΠ΅Π½ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΊΡΡΡΠΊΠ° Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ. Π‘Π½Π°ΡΠ°Π»Π° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ UIScrollViewDelegate:
#import Β«ViewController.hΒ»
@interface ViewController () <UIScrollViewDelegate>
@property (nonatomic, strong) UIScrollView *myScrollView;
@property (nonatomic, strong) UIImageView *myImageView;
@end
@implementation ViewController
ΠΠΎΡΠΎΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ:
β (void)scrollViewDidScroll:(UIScrollView *)scrollView{
/* ΠΡΠ·ΡΠ²Π°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΠ²Π΅ΡΡΠ°Π΅Ρ ΠΏΡΠΎΠΊΡΡΡΠΊΡ
ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅. */
self.myScrollView.alpha = 0.50f;
}
β (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
/* ΠΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΠΊΡΡΡΠΊΠΈ. */
self.myScrollView.alpha = 1.0f;
}
β (void)scrollViewDidEndDragging:(UIScrollView *)scrollView
willDecelerate:(BOOL)decelerate{
/* ΠΠ°ΡΠ°Π½ΡΠΈΡΡΠ΅ΠΌ, ΡΡΠΎ Π°Π»ΡΡΠ°-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Π΅ΡΠ½Π΅ΡΡΡ ΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ,
Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΊΠΈΠ²Π°Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ. */
self.myScrollView.alpha = 1.0f;
}
β (void)viewDidLoad{
[super viewDidLoad];
UIImage *imageToLoad = [UIImage imageNamed:@"MacBookAir"];
self.myImageView = [[UIImageView alloc] initWithImage: imageToLoad];
self.myScrollView = [[UIScrollView alloc] initWithFrame: self.view.bounds];
[self.myScrollView addSubview: self.myImageView];
self.myScrollView.contentSize = self.myImageView.bounds.size;
self.myScrollView.delegate = self;
[self.view addSubview: self.myScrollView];
}
ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, Π² ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΡΡ Π²ΠΈΠ΄Π°Ρ ΠΈΠΌΠ΅ΡΡΡΡ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΡ. ΠΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ β ΡΡΠΎ ΡΠΎΠ½ΠΊΠ°Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Ρ ΠΊΡΠ°Ρ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΡΡ (ΡΠΈΡ. 1.63).
ΠΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΡ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠ°ΠΊ Π²ΠΈΠ΄ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π² Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ (Π² Π²Π΅ΡΡ Π½Π΅ΠΉ ΡΠ°ΡΡΠΈ, Π½Π° ΠΏΠΎΠ»ΠΏΡΡΠΈ ΠΊ Π½ΠΈΠ·Ρ ΠΈ Ρ. Π΄.). ΠΠ½Π΅ΡΠ½ΠΈΠΌ Π²ΠΈΠ΄ΠΎΠΌ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° indicatorStyle. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ Ρ Π΄Π΅Π»Π°Ρ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π±Π΅Π»ΡΠΌ:
self.myScrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
Π ΠΈΡ. 1.63. Π§Π΅ΡΠ½ΡΠ΅ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΡ, ΠΏΠΎΡΠ²Π»ΡΡΡΠΈΠ΅ΡΡ ΡΠΏΡΠ°Π²Π° ΠΈ ΡΠ½ΠΈΠ·Ρ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°