2017-02-04 1 views
1

몇 장의 이미지 컬렉션을 위해 scrollview를 만들었고 2 초 간격으로 이미지를 하나씩 자동 스크롤하려고합니다. 아래의 코드에 따라 한 번에 모든 이미지를 슬라이드 할 수 있지만 한 이미지를 다른 이미지로 스크롤하여 시간을 기준으로합니다.목표 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를 닫은 후에 만 ​​종료됩니다. 이러한 동작을 원하지 않으면 다음 스크롤을 보내기 전에 viewcontroller가 표시되는지 확인하기위한 추가 조건을 추가 할 수 있습니다. 여기에서 어떻게 수행할지 확인할 수 있습니다. How to tell if UIViewController's view is visible

관련 문제