Pregunta

i quieren implementar un UIScrollView donde está habilitada la paginación y yo sólo puede hojear algunas imágenes. Eso es todo lo que quiero ser capaz de hacer por ahora.

he hecho esto hasta ahora en constructor de interfaces:? Alguien puede ayudar

text alt

No sé cómo hacer el resto. ¿Puede alguien por favor me ayude con esto. No necesito ninguna funcionalidad de zoom. No quiero ninguna vista previa de la imagen anterior o siguiente dentro del ScrollView, sólo quiero una paginación sencilla activar la vista de desplazamiento que permite al usuario hojear las imágenes.

Toda la ayuda es apreciada. Si se notaba me paso a paso cómo podría lograr esto que sería muy apreciada. gracias.

He mirado ejemplos de código y que sólo tienen demasiada complejidad pasando. Ive parecía en varios y prefieren un tutorial desde el principio. las gracias

¿Fue útil?

Solución

Parece que usted sólo tiene que añadir su contenido como una vista secundaria de la UIScrollView y añadir un reconocedor gesto.

Carga su imagen en un UIImageView. Añadir el UIImageView como subvista de la UIScrollView.

// do this in init or loadView or viewDidLoad, wherever is most appropriate
// imageView is a retained property
self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1.png"];
[scrollView addSubview:imageView];

Añadir un UISwipeGestureRecognizer a la UIScrollView.

// probably after the code above
UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:);
[scrollView addGestureRecognizer:swipe];
[swipe release];

En el controlador de UISwipeGestureRecognizer, cambie la imagen cargada en el UIImageView.

- (void)handleSwipe:(UIGestureRecognizer *)swipe {
  // do what you need to determine the next image
  imageView.image = [UIImage imageNamed:<your replacement image here>];
}

Otros consejos

Tal vez usted quiere echar un vistazo a mi ejemplo de implementación de un viewcontroller que hace exactamente esto. Escribí esto como respuesta a esta pregunta .
Tal vez esto es demasiado complicado para ti, pero no va a ser más fácil.
Y esto es sólo la versión básica, que carga todas las imágenes en la memoria en el arranque. Esto no funcionará en una aplicación real. Así que hay que poner en práctica algunas funciones UIScrollView-delegado. Y allí comienza la complejidad ...

//  ImageViewController.h
//
//  Created by Matthias Bauch on 12.10.10.
//  Copyright 2010 Matthias Bauch. All rights reserved.
//

#import <UIKit/UIKit.h>

#warning this is just a quick hack, you should not use this if you dont understand this. There might be leaks, bugs and a lot of whatever.

@interface ImageViewController : UIViewController {
    NSString *imagePath;
}
@property (nonatomic, copy) NSString *imagePath;
- (id)initWithImageDirectory:(NSString*)imgPath;
@end


//
//  ImageViewController.m
//
//  Created by Matthias Bauch on 12.10.10.
//  Copyright 2010 Matthias Bauch. All rights reserved.
//

#import "ImageViewController.h"


@implementation ImageViewController
@synthesize imagePath;

- (id)initWithImageDirectory:(NSString*)imgPath {
    if (self = [super init]) {
        imagePath = [imgPath copy];
    }
    return self;
}


- (UIView *)viewFullOfImagesAtPath:(NSString *)path withSize:(CGSize)size {
    NSError *error = nil;
    NSArray *filenames = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:&error];
    if (!filenames) {
        NSLog(@"Error accessing files: %@ [%@]", [error localizedDescription], error);
        return nil;
    }
    UIView *aView = [[UIView alloc] init];
    CGFloat xOffset = 0;
    for (NSString *filename in filenames) {
        NSString *fullPath = [path stringByAppendingPathComponent:filename];
        UIImage *image = [[[UIImage alloc] initWithContentsOfFile:fullPath] autorelease];
        if (!image)
            continue;
        CGRect frameRect = CGRectMake(xOffset, 0, size.width, size.height);
        UIImageView *imageView = [[[UIImageView alloc] initWithFrame:frameRect] autorelease];
        [imageView setImage:image];
        imageView.contentMode = UIViewContentModeScaleAspectFit;
        [aView addSubview:imageView];
        xOffset += size.width;
    }
    aView.frame = CGRectMake(0, 0, xOffset, size.height);
    return [aView autorelease];
}

- (void)viewDidLoad {
    [super viewDidLoad];

    UIScrollView *scrollView = [[[UIScrollView alloc] initWithFrame:self.view.bounds] autorelease];
    scrollView.pagingEnabled = YES;
    UIView *contentView = [self viewFullOfImagesAtPath:imagePath withSize:CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height)];
    NSLog(@"%f %f %f %f", contentView.frame.origin.x, contentView.frame.origin.y, contentView.frame.size.width, contentView.frame.size.height);
    [scrollView addSubview:contentView];
    scrollView.contentSize = CGSizeMake(CGRectGetWidth(contentView.frame), CGRectGetHeight(contentView.frame));
    [self.view addSubview:scrollView];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Overriden to allow any orientation.
    return YES;
}


- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}


- (void)viewDidUnload {
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}


- (void)dealloc {
    [imagePath release];
    [super dealloc];
}


@end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top