2017-02-06 2 views
-3
if(self){ 
     UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0, self.view.frame.size.width, self.view.frame.size.height)]; 
     scrollView.contentSize = CGSizeMake(320, 465); 

     [scrollView setScrollEnabled:YES]; 
     [scrollView setPagingEnabled:YES]; 
     [scrollView setAlwaysBounceVertical:NO]; 
     [self.uiSubView addSubview:scrollView]; 

     NSMutableArray *arrImage = [NSMutableArray arrayWithObjects:@"a.jpeg", @"cat.jpg", @"s.jpeg",@"ss.jpeg", nil]; 

     for (int i = 0; i < [arrImage count]; i++) 
     { 
      CGFloat xOrigin = i * scrollView.frame.size.width; 


      UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(xOrigin, 0, scrollView.frame.size.width, scrollView.frame.size.height)]; 
      [imageView setImage:[UIImage imageNamed:[arrImage objectAtIndex:i]]]; 
      [imageView setContentMode: UIViewContentModeScaleAspectFit]; 

      [scrollView addSubview:imageView]; 


     } 

     [scrollView setContentSize:CGSizeMake(scrollView.frame.size.width * [arrImage count], scrollView.frame.size.height)]; 


    } 


[NSTimer scheduledTimerWithTimeInterval:2.0 
            target:self 
            selector:@selector(scrollPages) 
            userInfo:nil 
            repeats:NO]; 




- (void)scrollPages 
{ 
//I want a method here, the timer works for the first image later it will not scroll, so tel me how to introduce delay between images. 

} 

Répondre

1

Ajouter un appel de minuterie dans viewWillAppear:

_slideShowTimer = [NSTimer scheduledTimerWithTimeInterval:K_DEFINE_YOUR_TIME 
            target:self 
           selector:@selector(scrollPages) 
           userInfo:Nil 
           repeats:YES]; 


-(void)scrollPages { 

    if (currentPage>=self.pageControl.numberOfPages) { 
     currentPage=0; 
     [self.scrollView setContentOffset:CGPointMake(0, 0) animated:YES]; 
    } 
    [self scrollToPage:currentPage]; 
    currentPage++; 
} 

-(void)scrollToPage:(NSInteger)aPage { 

    float myPageWidth = [self.scrollView frame].size.width; 
    [self.scrollView setContentOffset:CGPointMake(aPage*myPageWidth,0) animated:YES]; 
} 

- (void)scrollViewDidScroll:(UIScrollView *)sender { 
    // Update the page when more than 50% of the previous/next page is visible 
    if (!pageControlBeingUsed) { 
     CGFloat pageWidth = self.scrollView.frame.size.width; 
     pageNumber = floor((self.scrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1; 
     self.pageControl.currentPage = pageNumber; 
    } 
} 


- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { 
    pageControlBeingUsed = NO; 
    pageNumber1 = pageNumber; 

} 

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { 

    pageControlBeingUsed = NO; 
    pageNumber2 = pageNumber; 

    if(pageNumber == 4 && pageNumber2 == pageNumber1){ 
    //Do any action you want to do from last page or you add by your condition. 

    } 
} 
+0

Veuillez ne pas ajouter des commentaires pour savoir si vous pensez que le vote des personnes est justifié dans vos messages - il n'intéresse pas la plupart des lecteurs. Une fois que vous avez 50 points, vous pouvez commenter sous la question, mais même alors, je recommanderais de ne pas commenter ce commentaire, car cela ne fait probablement aucune différence. – halfer

+2

Sure monsieur. En fait je suis nouveau sur stackoverflow, je reçois aussi des victimes une telle activité le matin, j'ai donné la bonne réponse mais quelqu'un l'a fait descendre ... Merci pour votre suggestion. J'éviterai de tels commentaires à l'avenir. – Bapu

0
-(void)scrollPages 
{ 
    int currentPage = (int)self.scrollView.contentOffset.x/self.scrollView.bounds.size.width; 
    int totalPages = (int)self.scrollView.contentSize.width/self.scrollView.bounds.size.width; 
    if(currentPage < totalPages) 
    { 
     currentPage++; 
    } 
    else 
    { 
     currentPage = 1; 
    } 
    [self.scrollView setContentOffset:CGPointMake((currentPage-1)*self.scrollView.bounds.size.width,0)]; 
} 

Activez également la pagination.