2009-06-06 9 views
1

Je TENTENT d'apprendre UIScrollview en utilisant Docs d'Apple et leur code d'exemple http://developer.apple.com/iphone/library/samplecode/Scrolling/index.html mais quelque chose de si simple m'échappe.iPhone UIScrollView - comment obtenir un titre d'image

Comment pouvez-vous dire quelle image est actuellement sur l'écran, de sorte que si je sélectionne l'une des images dans la vue de défilement horizontal, comment aurais-je le nom de fichier de l'image, ou même un pointeur dans le tableau, Ensuite, faites quelque chose de plus avec l'image.

Je pensais qu'avec l'option Contrôle de page, je pourrais peut-être trouver un numéro de page et le mapper à l'image. J'ai pensé à compter la décélération pour compter les pages, mais un flick pas assez complet va l'incrémenter et donner un faux nombre. La dernière chose que je pourrais penser est d'obtenir contentOffSet et de diviser par la taille de l'image qui donnera un 1, 2, 3 et je pourrais pointer vers le tableau (trop fatigué pour essayer ce soir ... pensé que je pourrais demander avant Je perds beaucoup plus de temps ;-)).

D'autres idées? Je pensais qu'ils seraient une méthode quelque part qu'ils utilisent dans l'application de l'album photo.

Merci pour votre aide! Peut-être que je ne comprends pas leur code.

Paul

PS: Voici le code:

- (void)layoutScrollImages 

{ UIImageView * view = nul; NSArray * subviews = [sous-titres scrollView1];

// 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)]; 

}

  • (void) {viewDidLoad self.view.backgroundColor = [UIColor viewFlipsideBackgroundColor];

    // 1. Configuration du scrollview pour plusieurs images et l'ajouter au contrôleur de vue // // note: ce qui suit peut être fait dans Interface Builder, mais nous le montrer dans le code pour plus de clarté [scrollView1 setBackgroundColor : [UIColor blackColor]]; [scrollView1 setCanCancelContentTouches: NO]; scrollView1.indicatorStyle = UIScrollViewIndicatorStyleWhite; scrollView1.clipsToBounds = YES; // la valeur par défaut est NO, nous voulons restreindre le dessin dans notre scrollview scrollView1.scrollEnabled = YES;

    // La propriété pagingEnabled par défaut est NON, si elle est définie, le défileur s'arrêtera ou cliquera sur chaque photo // Si vous souhaitez un défilement fluide, ne définissez pas cette propriété. scrollView1.pagingEnabled = YES; // charge toutes les images de notre bundle et les ajoute à la vue déroulante // NSUInteger i; pour (i = 1; i < = kNumImages; i ++) { NSString * imageName = [NSString stringWithFormat: @ "Carte% d..png », i]; UIImage * image = [UIImage imageNamed: imageName]; UIImageView * imageView = [[UIImageView alloc] initWithImage: image];

    // setup each frame to a default height and width, it will be properly placed when we call "updateScrollList" 
    CGRect rect = imageView.frame; 
    rect.size.height = kScrollObjHeight; 
    rect.size.width = kScrollObjWidth; 
    imageView.frame = rect; 
    imageView.tag = i; // tag our images for later use when we place them in serial fashion 
    [scrollView1 addSubview:imageView]; 
    [imageView release]; 
    

    }

    [auto layoutScrollImages]; // place maintenant les photos dans la mise en page de série dans le scrollview C'était facile

Répondre

2

après une bonne nuit de sommeil!

CGPoint p = scrollView1.contentOffset; 
NSLog(@"x = %f, y = %f", p.x, p.y); 

Maintenant, il suffit de diviser par 320 (si horizontale et en plein écran) et ajouter 1 (car il commence à 0).

J'espère que cela aide quelqu'un d'autre!

Paul

Questions connexes