iOS 图片循环播放效果

在类中什么两个属性

@property (nonatomic,assign) BOOL isDragging;               //是否正在拖动
@property (nonatomic,strong)NSTimer *timer;                 //设置动画

用作判断是否在拖地和添加动画

先创建scrollview

UIView  *view4Header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kWIDTH, 100)];

UIScrollView * _scrollview=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, kWIDTH, 100)];
    _scrollview.contentSize=CGSizeMake(kWIDTH*6, 100);
//    _scrollview.contentOffset = CGPointMake(0, 0);
    _scrollview.pagingEnabled=YES;
    _scrollview.delegate=self;
    _scrollview.showsHorizontalScrollIndicator = NO;
    [view4Header addSubview:_scrollview];

    _pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake((kWIDTH - 80)/2, view4Header.frame.size.height - 20, 80, 10)];
    _pageControl.numberOfPages = 4;
    _pageControl.currentPage = 0;
    [view4Header addSubview:_pageControl];
    
    //贴图
    for (int i=0; i<6; i++) {

        int y=i + 5;
        if (i == 5) {
            y = 6;
        }else if (i == 0){
            y = 9;
        }

        UIImageView*imageView=[[UIImageView alloc]initWithFrame:CGRectMake(i*kWIDTH, 0, kWIDTH, 100)];
        imageView.image=[UIImage imageNamed:[NSString stringWithFormat:@"pic_n000%d",y]];
        [_scrollview addSubview:imageView];
    }

//  设置时钟动画 定时器
    self.timer = [NSTimer scheduledTimerWithTimeInterval:2.5f target:self selector:@selector(update:) userInfo:nil repeats:YES];
    //  将定时器添加到主线程
    [[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];

实现定时移动效果

- (void)update:(NSTimer *)timer{
    //定时移动
    
    CGPoint offSet = _scrollview.contentOffset;
    
    if (_isDragging == YES) {
        return ;
    }
    
    offSet.x = offSet.x + kWIDTH;
   
    [_scrollview setContentOffset:offSet animated:YES];
    
    if (offSet.x / kWIDTH == 5) {
        [_scrollview setContentOffset:CGPointMake(0, 0)];
    }
}

最后添加上ScrollView的代理方法,使其可以滑动拖动

#pragma mark - UIScrollViewDelegate
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    _isDragging = YES;
}
//  停止滚动
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    float offset = _scrollview.contentOffset.x;
    
    if (offset > kWIDTH*4) {
        [_scrollview setContentOffset:CGPointMake(kWIDTH, 0)];
    }

    if (offset < kWIDTH) {
        [_scrollview setContentOffset:CGPointMake(4*kWIDTH, 0)];
    }
    _isDragging = NO;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,523评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,252评论 4 61
  • 提起笔记, 或许我们就要追溯到高中时代了。那年高考,笔记漫天一撒,毕业了,工作了,也就再没写过笔记了。每天,老板交...
    蹒跚学步阅读 1,367评论 0 7
  • 东山的秋 爬了很多次东山,我最愿意爬的还是东山。 借着晨曦,我向东而去,想着逃离这个还未喧嚣的世界。 拾级而上,...
    东原郡人阅读 263评论 0 0
  • 你的前世,是我眼里最美的一场雪。 伴一盏青灯,捧一本古卷,那一夜,我在窗前虔诚地默念,刹那间,一场鹅毛般的大雪纷纷...
    墨灵卷阅读 247评论 0 0