De ce este necesară delegarea unui UIScrollView?

UIScrollView este un view în care vom putea efectua operații de zooming. Pentru a realiza acest lucru avem câțiva pași de urmat pentru a “pregăti” scrollview-ul.
1. Adăugăm în Storyboard un controller ScrollView și-l legăm de un outlet, să zicem scrollView in .h aferent
@property (strong, nonatomic) IBOutlet UIScrollView *scrollView;
2. Definim un ImageView in .h care va încărca imaginea în care vom face zoom sau pinch.
@property (strong, nonatomic) UIImageView *imageView;
3. Ambele proprietăți vor fi sintetizate pentru a putea fi utilizate în .m
@synthesize imageView=_imageView;
@synthesize scrollView=_scrollView;
4. În viewDidLoad: încărcăm poza pe care ne vom “juca”
self.imageView=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@”photo5.png”]];
5. Dimensionăm scrollView-ul cu dimensiunea imaginii încărcate
self.scrollView.contentSize=self.imageView.frame.size;
6. Legăm imageView-ul de scrollView ca un subview în stivă.
[self.scrollView addSubview:self.imageView];

În acest moment avem un scrollView în care am încărcat un imageView funcțional.

UIScrollView, fiind un view, nu știe să lucreze cu evenimentele apărute asupra sa. Prin urmare trebuie să delege pe cineva care să interpreteze acțiunile. Acest cineva este protocolul UIScrollViewDelegate. Pentru a-l pune la treabă, mai întâi îl adaugăm în .h
@interface ViewController : UIViewController
și urmărim care sunt metodele lui UIScrollViewDelegate ce trebuie musai implementate.
1. Cine anume se va scala atunci când se va face zooming? O întrebare legitimă. imageView-ul va suferi zooming-ul atunci cand el va aparea in scroolView.
– (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return self.imageView;
}

2. Delegăm pe self, adică ViewController-ul principal ca fiind delegat pentru scrollView. Acest ViewController implementează protocolul UIScrollViewDelegate, astfel încât scrollView-ul să “beneficieze” de metodele protocolului
self.scrollView.delegate=self;
3. Specificăm valorile maximale/minimale pentru zooming
self.scrollView.maximumZoomScale=5.0;
self.scrollView.minimumZoomScale=0.5;

Având toate acestea implementate, scrollView-ul va funcționa.

Share Button

Stefan

Leave a Reply

Your email address will not be published.