0

Je veux implémenter un UIScrollView où la pagination est activée et je peux juste feuilleter certaines images. C'est tout ce que je veux être capable de faire pour le moment.iphone: UIScrollView Paging activé sans NO ZOOM et sans prévisualisation

Je l'ai déjà fait dans le constructeur d'interface: quelqu'un peut-il m'aider?

alt text

Je ne sais pas comment faire le reste. Quelqu'un pourrait m'aider avec ça. Je n'ai besoin d'aucune fonctionnalité de zoom. Je ne veux pas d'aperçu de l'image précédente ou suivante dans le scrollview, je veux juste une simple vue de défilement activé de pagination qui permet à un utilisateur de feuilleter des images.

Toute aide est appréciée. Si vous pouviez me dire étape par étape comment je pourrais réaliser ce qui serait le plus apprécié. Je vous remercie. J'ai regardé des exemples de code et ils ont juste trop de complexité en cours. Ive a regardé plusieurs et préfère un tutoriel depuis le début. merci

Répondre

1

Il semble que vous ayez juste besoin d'ajouter votre contenu en tant que sous-vue de UIScrollView et d'ajouter un outil de reconnaissance de gestes.

Chargez votre image dans un UIImageView. Ajoutez l'UIImageView en tant que sous-vue de l'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]; 

Ajoutez un UISwipeGestureRecognizer à UIScrollView.

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

Sur le gestionnaire UISwipeGestureRecognizer, changer l'image chargée dans le UIImageView.

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

pseudo code est tout bien et dit, y at-il un exemple d'un tutoriel afin que je puisse suivre? ou peut-être pourriez-vous en écrire une en guise de réponse, dites simplement étape par étape? merci – Pavan

+0

Exemple de code ajouté. Je n'ai pas le temps d'écrire un tutoriel complet, mais je pense que cela couvre ce dont vous avez besoin, moins votre logique de suivi d'image. – Altealice

3

peut-être vous voulez jeter un oeil à mon sample implementation d'un viewcontroller qui fait exactement cela. J'ai écrit cette chose comme réponse à this question.
Peut-être que c'est trop compliqué pour vous, mais cela ne sera pas plus facile.
Et ce n'est que la version de base, qui charge toutes les images en mémoire au démarrage. Cela ne fonctionnera pas dans une application réelle. Vous devez donc implémenter certaines fonctions UIScrollView-Delegate. Et là la complexité commence ...

// 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 
+0

Je ne m'occupe pas de la complexité, ce qui me dérange est des fonctions supplémentaires qui ne sont pas nécessaires comme les fonctions de zoom ou/et les fonctions de prévisualisation. Je ne crains pas de créer des fonctions déléguées, cela rend les choses plus propres, mais j'ai juste besoin de savoir comment le faire. – Pavan

+0

comme vous l'avez dit: "C'est un hack .... et cela ne devrait pas être utilisé car il peut contenir beaucoup de fuites de bugs et beaucoup de tout". Si vous pouviez me guider vers quelque chose d'utile, ce serait formidable. J'apprécie votre temps. merci d'essayer d'aider. – Pavan

+0

Ceci n'est pas destiné à être une solution prête à l'emploi. C'est plus comme un pointeur dans une direction possible. –