Uso del Scroll View

Si el contenido excede el tamaño de la pantalla, se usa el Scroll View para mostrar la parte oculta.

Puede contener todos los demás elementos de la interfaz de usuario, como Image View, etiquetas (labels), Text View e incluso otro Scroll View.

Propiedades importantes

  • contentSize
  • contentInset
  • contentOffset
  • delegate

Métodos importantes

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

Métodos delegados importantes

En ViewController.h, agregueDeclare el Scroll View y haga que la clase cumpla con el protocolo delegado, como se muestra a continuación:

#import <UIKit/UIKit.h>

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

@end

Agregue el método personalizado 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];
}

Nota:Debemos agregar una imagen llamada "AppleUSA1.jpg" a nuestro proyecto. Esto se puede hacer arrastrando la imagen al área de navegación donde se listan los archivos del proyecto. La imagen debe ser más alta que la altura del dispositivo.

Implementación del delegado de scrollView en 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");
}

Actualice viewDidLoad en ViewController.m, como se muestra a continuación

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

Salida

Ahora, cuando ejecutemos la aplicación, veremos la siguiente salida. Una vez que desplacemos el Scroll View, podremos ver el resto de la imagen:

scrollViewOutput

Otras extensiones