2013-08-02 4 views
0

J'ai mis en place un UIScrollView et chargé en images et le définir égal à la vue avec un certain décalage entre les images. Quelqu'un peut-il éventuellement expliquer ce que j'ai pu faire de mal? Il montre la première image très bien, mais ne me laissera pas défiler à gauche et à droite pour voir les suivants. Ai-je besoin d'un outil de reconnaissance de gestes avec le nouveau XCode pour que cela fonctionne?UIScrollView avec des images générées

- (void)viewDidLoad 
    { 
     [super viewDidLoad]; 

     int PageCount = 3; 

     UIScrollView *Scroller = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 
     Scroller.backgroundColor = [UIColor clearColor]; 
     Scroller.pagingEnabled = YES; 
     Scroller.contentSize = CGSizeMake(PageCount = Scroller.bounds.size.width, Scroller.bounds.size.height); 

     CGRect ViewSize = Scroller.bounds; 

     UIImageView *ImgView = [[UIImageView alloc] initWithFrame:ViewSize]; 
     [ImgView setImage:[UIImage imageNamed:@"1.png"]]; 
     [Scroller addSubview:ImgView]; 

     ViewSize = CGRectOffset(ViewSize, Scroller.bounds.size.width, 0); 

     UIImageView *ImgView2 = [[UIImageView alloc] initWithFrame:ViewSize]; 
     [ImgView2 setImage:[UIImage imageNamed:@"2.png"]]; 
     [Scroller addSubview:ImgView2]; 

     ViewSize = CGRectOffset(ViewSize, Scroller.bounds.size.width, 0); 

     UIImageView *ImgView3 = [[UIImageView alloc] initWithFrame:ViewSize]; 
     [ImgView3 setImage:[UIImage imageNamed:@"3.png"]]; 
     [Scroller addSubview:ImgView3]; 

     [self.view addSubview:Scroller]; 

    } 

    @end 
+1

Si vous avez 'NbPages = Scroller.bounds.size.width', vous avez probablement' DESTINÉ NbPages * Scroller.bounds.size.width' – Rob

+0

Whoops! Désolé merci pour ça! –

Répondre

0

Vous devez définir manuellement le contentSize de votre ScrollView au rectangle maximal qui correspond à tous les ImageViews que vous avez ajouté. Par exemple: Disons que vous voulez faire défiler à droite et à gauche et vous avez 4 vues avec chaque vue ayant une largeur de 100 et vous avez un décalage de 10 dans la direction x. Puis après avoir ajouté toutes les 4 vues à votre scrollView, vous devrez faire le contentSize comme ci-dessous:

scrollView.contentSize = CGSizeMake(10 + (100 + 10)*4 , scrollView.contentSize.y); 

Cela rendra le scrollView scrollable et vous verrez toutes les vues.

0

Essayez cette

int PageCount = 3; 
NSMutableArray *arrImageName =[[NSMutableArray alloc]initWithObjects:@"1.png",@"2.png",@"3.png", nil]; 
UIScrollView *Scroller = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 
Scroller.scrollEnabled=YES; 
Scroller.backgroundColor = [UIColor clearColor]; 
Scroller.pagingEnabled = YES; 
[self.view addSubview:Scroller]; 
int width=Scroller.frame.size.width; 
int xPos=0; 
for (int i=0; i<PageCount; i++) 
{ 
    UIImageView *ImgView = [[UIImageView alloc]initWithFrame:CGRectMake(xPos, 0, Scroller.frame.size.width, Scroller.frame.size.height)]; 
    [ImgView setImage:[UIImage imageNamed:[arrImageName objectAtIndex:i]]]; 
    [Scroller addSubview:ImgView]; 
    Scroller.contentSize = CGSizeMake(width, 0); 
    width +=Scroller.frame.size.width; 
    xPos +=Scroller.frame.size.width; 
} 
+0

Pouvez-vous m'aider avec ça? ça ne marche pas pour moi et j'ai un accident. Je l'ai fait exactement comme vous l'avez tapé –

+0

peu importe merci je l'ai compris! :) Beaucoup plus petit dans le nombre de lignes! –

Questions connexes