NSTimer *timer;
NSInteger time;
UIScrollView *scrollview;
CGFloat height;
NSArray *arr = @[@"测试1afdfafs",@"测试2sadfasasf",@"测试3adsaf",@"测试4adsafa"];
scrollview = [[UIScrollView alloc] initWithFrame:CGRectMake(20, 100, WIDTH-40, 20)];
scrollview.backgroundColor = [UIColor redColor];
scrollview.contentSize = CGSizeMake(WIDTH-40, arr.count*20);
scrollview.showsVerticalScrollIndicator = NO;
scrollview.userInteractionEnabled = NO;
scrollview.pagingEnabled = YES;
[self.view addSubview:scrollview];
time = 0;
for (int i = 0; i<arr.count; i++) {
UILabel *label =[[UILabel alloc]initWithFrame:CGRectMake(0, i*20, WIDTH-40, 20)];
label.numberOfLines = 0;
label.font = [UIFont systemFontOfSize:15.0];
label.text = arr[i];
[scrollview addSubview:label];
}
timer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(action) userInfo:nil repeats:YES];
-(void)action{
NSArray *arr = @[@"测试1",@"测试2",@"测试3",@"测试4"];
if (time == arr.count-1) {//当滚动到最后一个时,回到第一个
time = 0;
scrollview.contentOffset = CGPointMake(0, 0);
}else{
time = time +1;
[UIView animateWithDuration:1 animations:^{
scrollview.contentOffset = CGPointMake(0, time*20);
} completion:^(BOOL finished) {
}];
}
效果:
2.防止下拉的时候调用 scrollViewDidEndDecelerating
CGFloat lastContentOffset;//偏移量
#pragma mark - UIScrollerViewDelegate
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
lastContentOffset = scrollView.contentOffset.x;
}
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//防止下拉的时候调用scrollViewDidEndDecelerating
if (lastContentOffset != scrollView.contentOffset.x) {
}
}