user1411094
user1411094

Reputation: 49

UIScrollView paging tagging

I've created a UIScrollView with paging containing several images, with 1 image per "page", and i was wondering if there were any way to distinguish the images from each other? Fx. when the first image is showing, I would have a button to set a UILabel to '1' and when the second image is showing, the same button would set the same UILabel to '2'.

Here's my code:

pictures = [NSArray arrayWithObjects: [UIImage imageNamed:@"AND.png"], [UIImage imageNamed:@"ALB.png"], nil];

    for (int i = 0; i < pictures.count; i++) {
        CGRect frame;
        frame.origin.x = 135 + (self.scrollViewQuiz.frame.size.width * i);
        frame.origin.y = 40;
        frame.size = CGSizeMake(50, 50);

        UIImageView *subview = [[UIImageView alloc] initWithFrame:frame];
        subview.image = [pictures objectAtIndex:i];
        [self.scrollViewQuiz addSubview:subview];
    }

    self.scrollViewQuiz.contentSize = CGSizeMake(self.scrollViewQuiz.frame.size.width * pictures.count, self.scrollViewQuiz.frame.size.height);

Upvotes: 2

Views: 309

Answers (3)

Dilip Rajkumar
Dilip Rajkumar

Reputation: 7074

Try these two.. these should work.. hope this helps..

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
               CGFloat xOffset = scrollView.contentOffset.x;
   int currentPage = floor(xOffset / scrollView.bounds.size.width);
    [itsLabel setText:[NSString stringWithFormat:@"%i", currentPage]];
}

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
               CGFloat xOffset = scrollView.contentOffset.x;
   int currentPage = floor(xOffset / scrollView.bounds.size.width);
    [itsLabel setText:[NSString stringWithFormat:@"%i", currentPage]];
}

Upvotes: 0

rob mayoff
rob mayoff

Reputation: 386018

It sounds like you just want to compute the "page number" that the scroll view is currently displaying. You can try something like this as your button's action:

- (IBAction)buttonWasTapped:(id)sender {
    UIScrollView *scrollView = self.scrollViewQuiz;
    int pageNumber = (int)roundf(scrollView.contentOffset.x / scrollView.bounds.size.width);
    self.label.text = [NSString stringWithFormat:@"%d", pageNumber];
}

Upvotes: 1

inwit
inwit

Reputation: 961

You could implement the following scrollview delegate method:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

In it you would examine the scrollview's contentOffset and set the label accordingly.

Upvotes: 0

Related Questions