2017-02-04 5 views
1

Я сделал scrollview для нескольких коллекций изображений, и я хочу, чтобы он автоматически просканировал изображения по интервалу в 2 сек. В приведенном ниже коде я смог сделать все снимки одновременно, но я хочу, чтобы одно изображение прокручивалось, а затем другое по времени.Как автопрокрутить изображения по одному на интервал в 2 секунды, используя Objective C?

-(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

Смежные вопросы