iOS - Vue de défilement

Utilisation de la vue de défilement

La vue par défilement est utilisée pour afficher du contenu au-delà de la taille de l'écran. Il peut contenir tous les autres éléments de l'interface utilisateur tels que les vues d'image, les étiquettes, les vues de texte et même une autre vue de défilement elle-même.

Propriétés importantes

  • contentSize
  • contentInset
  • contentOffset
  • delegate

Méthodes importantes

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated

Méthodes de délégué importantes

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView
willDecelerate:(BOOL)decelerate
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

Mettez à jour ViewController.h comme suit -

Rendez votre classe conforme au protocole de délégué de vue défilante en ajoutant < UIScrollViewDelegate> et déclarant une instance de vue de défilement comme indiqué ci-dessous dans ViewController.h.

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UIScrollViewDelegate> {
   UIScrollView *myScrollView;
}	
@end

Ajouter une méthode personnalisée addScrollView

-(void)addScrollView {
   myScrollView = [[UIScrollView alloc]initWithFrame:
   CGRectMake(20, 20, 280, 420)];
   myScrollView.accessibilityActivationPoint = CGPointMake(100, 100);
   imgView = [[UIImageView alloc]initWithImage:
   [UIImage imageNamed:@"AppleUSA.jpg"]];
   [myScrollView addSubview:imgView];
   myScrollView.minimumZoomScale = 0.5;
   myScrollView.maximumZoomScale = 3;
   myScrollView.contentSize = CGSizeMake(imgView.frame.size.width,
   imgView.frame.size.height);
   myScrollView.delegate = self;
   [self.view addSubview:myScrollView];
}

Note -

Nous devons ajouter une image nommée "AppleUSA1.jpg" à notre projet, ce qui peut être fait en faisant glisser l'image vers notre zone de navigation où nos fichiers de projet sont répertoriés. L'image doit être d'une résolution supérieure à celle de l'appareil pour voir le défilement de l'image.

Implémenter les délégués scrollView dans ViewController.m

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
   return imgView;
}

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
   NSLog(@"Did end decelerating");
}	

-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
   // NSLog(@"Did scroll");
}

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView 
   willDecelerate:(BOOL)decelerate {
   NSLog(@"Did end dragging");
}

-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
   NSLog(@"Did begin decelerating");
}

-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
   NSLog(@"Did begin dragging");
}

Mettez à jour viewDidLoad dans ViewController.m comme suit -

(void)viewDidLoad {
   [super viewDidLoad];
   [self addScrollView];
   //Do any additional setup after loading the view, typically from a nib
}

Production

Lorsque nous exécutons l'application, nous obtenons la sortie suivante. Une fois que vous faites défiler la vue de défilement, vous pourrez voir la partie restante de l'image.