2011-07-31 4 views
0
UIScrollView *scrl = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 768,1024)]; 
scrl.contentSize = CGSizeMake(768 * 8, 1024); 

Voici la définition de mon UIScrollView, j'ai un remplissage le parchemin avec 8 images chaque image est un 768 * 1024, comment puis-je faire diaporama UIScrollView, chaque image séjour 2 secondes et diapositives à l'image suivante, comment puis-je faire cela?UIScrollView slideShow

Répondre

4

Vous pouvez utiliser un UIImageView au lieu d'un UIScrollView.

Dans votre fichier .h:

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController { 
    int imageId; 
    UIImageView *imageView;  
} 

@property(nonatomic, retain) IBOutlet UIImageView * imageView; 

@end 

Dans votre fichier .m:

@implementation ViewController 

#import <QuartzCore/CAAnimation.h> 


#define NUMBER_OF_IMAGES 8; 

@synthesize imageView; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    imageId = 0; 
    [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(changeImage) userInfo:nil repeats:YES]; 
} 

-(void)changeImage 
{ 
    imageId = imageId + 1; 

    CATransition * trs = [CATransition animation]; 
    trs.duration = 1; 
    [trs setType:kCATransitionPush]; 

    int id = imageId % NUMBER_OF_IMAGES; 
    imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"image_%d.jpg", id]]; 
    [imageView.layer addAnimation:trs forKey:kCATransition]; 
} 

@end 

Vous devez ajouter le QuartzCore.framework à votre projet.

+0

Désolé pour mon ignorance, mais qu'est-ce que cette ligne 'id id = imageId% NUMBER_OF_IMAGES;' fait exactement? Je suis particulièrement confus au sujet du bit '% NUMBER_OF_IMAGES'. Est-ce qu'il place une limite sur la valeur que 'id' peut être définie (dans ce cas, 8)? Parce que j'utiliserais sinon une instruction if pour vérifier si 'id' est déjà 8 ... ne connaissait pas ce type de notation que vous avez utilisé. – MiguelB

+0

L'opérateur @miamk% calcule le reste de la division imageId par NUMBER_OF_IMAGES. Ensuite, avec cette opération, la valeur de l'identifiant est toujours comprise entre 0 et 7. –

0

Je ne vous donner un code (qui est votre travail) ...

Voici comment faire une telle chose:

Avoir un UIScrollView parent qui gère la pagination - doit mettre en œuvre la méthode de délégué scrollViewDidScroll:

Avoir un UIPageControl (utilisé pour garder une trace de la page que vous êtes, code sage ou UI sage)

IMPORTANT pour zooming: 1. Créez une sous-classe de UIScrollView et ajouter un UIImageV regardez-le comme une sous-vue. 2. Autoriser le défilement et l'absence de pagination. 3. Faire que cette sous-classe ait implémenté la méthode déléguée de viewForZoomingInScrollView: (retourne la UIImageView)