美文网首页iOS学习笔记iOS 进阶
SDCycleScrollView-轮播器

SDCycleScrollView-轮播器

作者: 香橙柚子 | 来源:发表于2017-03-06 15:17 被阅读104次

    SDCycleScrollView是目前用的比较多的轮播器.简单介绍一下用法.
    首先附上GitHub代码地址:https://github.com/gsdios/SDCycleScrollView

    导入库

    SDCycleScrollView支持pod导入
    pod 'SDCycleScrollView',我一般是用pod导入的,这样比较简单,手动配置太慢,而且容易出错.
    没有安装CocoaPods的童鞋可以参考:CocoaPods最新安装(不使用淘宝镜像)

    使用

    大家发现这个框架虽然用的人多,但是GitHub上的文档很简单,确实使用起来也很简单.

    导入头文件

    #import <SDCycleScrollView/SDCycleScrollView.h>

    加入协议:@interface FirstViewController ()<SDCycleScrollViewDelegate>
    我们主要讨论以下几个情况:

    • 采用本地图片
    • 采用网络图片
    • 图片加配文字

    先创建好项目,创建轮播器即可,再把参数什么的设置以下就行.

    上代码:

     - (void)viewDidLoad {
        [super viewDidLoad];
        // 情景一:采用本地图片实现
        NSArray *imageNames = @[@"pic1.jpg", @"pic2.jpg",@"pic3.jpg",@"pic4.jpg" ];
    
        // 情景二:采用网络图片实现
        NSArray *imagesURLStrings = @[
                                                 @"https://ss2.baidu.com/-vo3dSag_xI4khGko9WTAnF6hhy/super/whfpf%3D425%2C260%2C50/sign=a4b3d7085dee3d6d2293d48b252b5910/0e2442a7d933c89524cd5cd4d51373f0830200ea.jpg",
                                                 @"https://ss0.baidu.com/-Po3dSag_xI4khGko9WTAnF6hhy/super/whfpf%3D425%2C260%2C50/sign=a41eb338dd33c895a62bcb3bb72e47c2/5fdf8db1cb134954a2192ccb524e9258d1094a1e.jpg",
                                                 @"http://c.hiphotos.baidu.com/image/w%3D400/sign=c2318ff84334970a4773112fa5c8d1c0/b7fd5266d0160924c1fae5ccd60735fae7cd340d.jpg",
                                                 @"http://img3.qianzhan123.com/news/201409/15/20140915-2b319c7d7cf0ad8a_550x1300.jpg" 
                              ];
    
        // 情景三:图片配文字
        NSArray *titles = @[@"我是ios_xuanhe ",
                            @"小白一个",
                            @"写的不好勿怪",
                            @"觉得可以的点个赞吧"
                            ];
    
        CGFloat kScreenW = self.view.bounds.size.width;
    

    下面我们简单写一下几个情况的实现

    采用本地图片实现

    // 本地加载 --- 创建不带标题的图片轮播器
    SDCycleScrollView *cycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectMake(0, 0,  kScreenW, 200) shouldInfiniteLoop:YES imageNamesGroup:imageNames];
    cycleScrollView.delegate = self;
    cycleScrollView.pageControlStyle = SDCycleScrollViewPageContolStyleAnimated;
    [self.view addSubview:cycleScrollView];
    cycleScrollView.scrollDirection = UICollectionViewScrollDirectionVertical;
    cycleScrollView.autoScrollTimeInterval = 3.0;//轮播时间间隔,默认1.0秒,可自定义
    

    采用网络图片 + 图片加配文字

    // 网络加载 --- 创建带标题的图片轮播器
    SDCycleScrollView *cycleScrollView2 = [SDCycleScrollView cycleScrollViewWithFrame:CGRectMake(0, 0,  kScreenW, 200)  delegate:self placeholderImage:[UIImage imageNamed:@"placeholder"]];
    
    cycleScrollView2.pageControlAliment = SDCycleScrollViewPageContolAlimentRight;
    cycleScrollView2.titlesGroup = titles;
    cycleScrollView2.currentPageDotColor = [UIColor whiteColor]; // 自定义分页控件小圆标颜色
    [self.view addSubview:cycleScrollView2];
    
    //采用网络图片
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            cycleScrollView2.imageURLStringsGroup = imagesURLStrings;
        });
    

    监听点击方式有两种:

    1.使用block监听点击事件:

    cycleScrollView2.clickItemOperationBlock = ^(NSInteger index) {
            NSLog(@"%ld", (long)index);
     };
    

    也可以用代理,我本人更喜欢用代理,因为block会很慢

    - (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index{
        NSLog(@"%ld",(long)index);
    }     
    

    创建自定义图片的pageControlDot的图片轮播器

    SDCycleScrollView *cycleScrollView3 = [SDCycleScrollView cycleScrollViewWithFrame:CGRectMake(0, 0,  kScreenW, 200)delegate:self placeholderImage:[UIImage imageNamed:@"placeholder"]];
    cycleScrollView3.currentPageDotImage = [UIImage imageNamed:@"pageControlCurrent"];
    cycleScrollView3.pageDotImage = [UIImage imageNamed:@"pageControlOther"];
    cycleScrollView3.imageURLStringsGroup = imagesURLStrings;
    [self.view addSubview:cycleScrollView3];
    

    特殊的文字轮播器

    // 网络加载 --- 创建只上下滚动展示文字的轮播器
     // 由于模拟器的渲染问题,如果发现轮播时有一条线不必处理,模拟器放大到100%或者真机调试是不会出现那条线的
    SDCycleScrollView *cycleScrollView4 = [SDCycleScrollView cycleScrollViewWithFrame:CGRectMake(0, 300,  375, 50) delegate:self placeholderImage:nil];
        cycleScrollView4.scrollDirection = UICollectionViewScrollDirectionVertical;
        cycleScrollView4.onlyDisplayText = YES;
        cycleScrollView4.titlesGroup = titles ;
        
    [self.view addSubview:cycleScrollView4];
    

    如果你发现你的CycleScrollview会在viewWillAppear时图片卡在中间位置,你可以调用此方法调整图片位置

    - (void)viewWillAppear:(BOOL)animated
    {
     [super viewWillAppear:animated];
     [CycleScrollview adjustWhenControllerViewWillAppera];
    }
        
    

    最后附上一个效果动画:


    SDCycleScrollView动画效果

    喜欢的点个赞吧!
    O(∩_∩)O谢谢!

    相关文章

      网友评论

        本文标题:SDCycleScrollView-轮播器

        本文链接:https://www.haomeiwen.com/subject/sykugttx.html