2017-02-04 68 views
1

我已經爲少數圖像集合進行了滾動視圖,我希望它能夠以2秒的間隔逐一自動滾動圖像。通過下面的代碼,我可以使所有圖像一次滑動,但我希望一個圖像滾動,然後相對於時間滾動。如何使用Objective C以2秒的時間間隔逐個自動滾動圖像?

-(void)scrollPages{ 

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



CGFloat currentOffset = scrollView.contentOffset.x; 

if(currentOffset < 2500){ 

    CGFloat newOffset = currentOffset + 1250; 



    [UIScrollView beginAnimations:nil context:NULL]; 
    [UIScrollView setAnimationDuration:3]; 
    [scrollView setContentOffset:CGPointMake(newOffset,0.0) animated:YES]; 
    } 

回答

0

嘗試使用dispatch_after函數進行簡單遞歸。 事情是這樣的:

-(void)scrollToNextImage{ 
    //place here code for computing and setting scrollview offset 

    _weak typeof(self) weakSelf = self; //for avoiding retain cycle 
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
     [weakSelf scrollToNextImage]; 
    }); 
} 

請注意,這種情況下的圖像將滾動,即使視圖 - 控制會消失。遞歸只會在關閉viewcontroller後結束。如果你不想要這樣的行爲,你可以添加額外的條件來檢查在調度下一次滾動之前viewcontroller是否可見 - 你可以檢查如何做他的這裏:How to tell if UIViewController's view is visible

相關問題