2010-03-23 5 views
1

Vous avez ce code pour un viewcroller sur le site des développeurs Apple.iphone app défilement vue est horizontale mais je le veux vertical - comment puis-je changer cela?

@synthesize scrollView1, scrollView2; 

const CGFloat kScrollObjHeight = 467.0; 
const CGFloat kScrollObjWidth = 320.0; 
const NSUInteger kNumImages  = 6; 


- (void)layoutScrollImages 
{ 
    UIImageView *view = nil; 
    NSArray *subviews = [scrollView1 subviews]; 


    // reposition all image subviews in a horizontal serial fashion 
    CGFloat curXLoc = 0; 
    for (view in subviews) 
    { 
     if ([view isKindOfClass:[UIImageView class]] && view.tag > 0) 
     { 
      CGRect frame = view.frame; 
      frame.origin = CGPointMake(curXLoc, 0); 
      view.frame = frame; 

      curXLoc += (kScrollObjWidth); 
     } 
    } 

    // set the content size so it can be scrollable 
    [scrollView1 setContentSize:CGSizeMake((kNumImages * kScrollObjWidth), [scrollView1 bounds].size.height)]; 
} 

Fonctionne avec brio, les images sont pivotées en les tirant à gauche ou à droite. mais je veux tirer les images de haut en bas pour les changer.

Quelqu'un peut-il m'aider avec ça? cette partie dans le code regarde comme si elle contrôle la direction mais je ne suis pas sûr comment la changer.

// reposition all image subviews in a horizontal serial fashion 
    CGFloat curXLoc = 0; 
    for (view in subviews) 
    { 
     if ([view isKindOfClass:[UIImageView class]] && view.tag > 0) 
     { 
      CGRect frame = view.frame; 
      frame.origin = CGPointMake(curXLoc, 0); 
      view.frame = frame; 

      curXLoc += (kScrollObjWidth); 
     } 
    } 

Toute aide plus appréciée, merci!

Billy

Répondre

2

Pour changer de défilement « direction » de l'horizontale à vous devriez essentiellement échanger la façon verticale vous traitez les coordonnées x et y. Le code ressemblera à:

- (void)layoutScrollImages 
{ 
    UIImageView *view = nil; 
    NSArray *subviews = [scrollView1 subviews]; 

    // reposition all image subviews in a horizontal serial fashion 
    CGFloat curYLoc = 0; 
    for (view in subviews) 
    { 
     if ([view isKindOfClass:[UIImageView class]] && view.tag > 0) 
     { 
      CGRect frame = view.frame; 
      frame.origin = CGPointMake(0, curYLoc); 
      view.frame = frame; 

      curYLoc += (kScrollObjHeight); 
     } 
    } 

    // set the content size so it can be scrollable 
    [scrollView1 setContentSize:CGSizeMake([scrollView1 bounds].size.width, kNumImages * kScrollObjHeight)]; 
} 
+0

Salut Vladimir, merci pour votre réponse. J'ai essayé votre code, mais je reçois 3 erreurs: curXLoc non déclarés, Trop peu d'arguments pour la fonction « CGSizeMake », et Trop peu d'arguments à « setContentSize » Pouvez-vous me aider? Billy – iamjonesy

+0

Désolé fait quelques fautes de frappe - curXLoc doit être curYLoc et devrait également supprimer des parenthèses supplémentaires dans le code – Vladimir

+0

brillant qui fonctionne grâce! Une autre question, cependant, si cela ne vous dérange pas :) le scrollview maintenant en haut et vous faites glisser vos doigts vers le haut pour passer à la vue suivante. Comment puis-je changer cela alors quand je commence, je dois faire défiler vers le bas à la place? Billy – iamjonesy

Questions connexes