iOS-图片轮播-SDCycleSCrollView的使用

介绍: SDCycleScrollView 是一款非常强大的轮播图第三方. 轮播流畅,手滑流畅.使用方便.自定义简单. 可以更改pageControl.

一. Demo地址 https://pan.baidu.com/disk/home#list/path=%2F总结%2FDemo-图片轮播

二.效果截图.

三.代码.

#import "ViewController.h"

#import "Masonry.h"

#import "SDCycleScrollView.h"

#define kWidth [UIScreen mainScreen].bounds.size.width

@interface ViewController () <SDCycleScrollViewDelegate>

@property (nonatomic, strong) UIImageView  * bgImageView;
@property (nonatomic, strong) UIScrollView * bgScrollView;

// 本地图片
@property (nonatomic, strong) SDCycleScrollView * localCycleScrollView;

// 网络图片
@property (nonatomic, strong) SDCycleScrollView * webCycleScrollView;

// 自定义pageControl
@property (nonatomic, strong) SDCycleScrollView * customCycleScrollView;

// 跑马灯效果
@property (nonatomic, strong) SDCycleScrollView * textCycleScrollView;

@end

/** 滚动控制接口
 1. autoScrollTimeInterval 自动滚动间隔,默认为2s.
 2. infiniteLoop 是否无限循环.
 3. autoScroll 是否滚动设置.
 4. scrollDirection 图片滚动方向.
 5. delegate 设置代理.
 6. adjustWhenControllerViewWillAppera 解决viewWillAppear时出现时轮播图卡在一半的问题,在控制器viewWillAppear时调用此方法
 7.
 */

/** 自定义样式接口
 1. bannerImageViewContentMode 轮播图的ContentMode,默认为UIViewContentModeScaleToFill
 2. placeholderImage 占位图 用于网络
 3. showPageControl 是否显示分页控件
 4. hidesForSinglePage 是否在只有一张图片时隐藏pageControl,默认为Yes.
 5. onlyDisplayText 只显示文字轮播
 6. pageControlStyle 样式. 默认为动画样式
 7. pageControlAliment 分页控件的位置
 8. pageControlBottomOffset 分页控件距离轮播图的右边间距.
 9. pageControlDotSize 分页控件小圆标的大小
 10. currentPageDotColor当前分页控件小圆标颜色
 11. currentPageDotImage 当前分页控件小圆标的图片
 12. pageDotImage 其他分页控件小圆标图片
 13. titleLabelTextColor 轮播文字label字体颜色
 14. titleLabelTextFont 轮播文字label的字体大小
 15. titleLabelBackgroundColor 轮播文字label背景颜色
 16. titleLabelHeight 轮播文字字体高度
 */

/** 清除缓存
 1. clearImagesCache
 [SDCycleScrollView clearImagesCache];
 */

@implementation ViewController

#pragma mark - 生命周期
- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

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

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
}

#pragma mark viewDidLoad
- (void)viewDidLoad
{
    [super viewDidLoad];

    [self basicSetting];

    [self addBgModule];

    // 本地存储的图片
    [self local_storage];

    // 网络图片
    [self webImage];

    [self cuatomPageControl];

    [self onlyText];
}

#pragma mark - 系统代理
#pragma mark SDCycleScrollViewDelegate

// 点击图片代理方法
- (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index
{
    NSLog(@"---点击了第%ld张图片", (long)index);

    // 清理缓存
    [SDCycleScrollView clearImagesCache];

}

// 滚动到第几张图片的回调
-(void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didScrollToIndex:(NSInteger)index
{
    NSLog(@">>>>>> 滚动到第%ld张图", (long)index);
}

#pragma mark - 点击事件

#pragma mark - 实现方法
#pragma mark 基本设置
- (void)basicSetting
{
    self.title = @"";
}

- (void)addBgModule
{
    [self.view addSubview:self.bgImageView];
    [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) {

        make.edges.mas_equalTo(self.view).with.insets(UIEdgeInsetsMake(0, 0, 0, 0));
    }];

    [self.view addSubview:self.bgScrollView];
    [self.bgScrollView mas_makeConstraints:^(MASConstraintMaker *make) {

        make.edges.mas_equalTo(self.view).with.insets(UIEdgeInsetsMake(0, 0, 0, 0));
    }];
}

- (void)local_storage
{

    [self.bgScrollView addSubview:self.localCycleScrollView];
    [self.localCycleScrollView mas_makeConstraints:^(MASConstraintMaker *make) {

        make.left.mas_equalTo(self.bgScrollView).with.offset(0);
        make.width.mas_equalTo(kWidth);
        make.top.mas_equalTo(self.bgScrollView).with.offset(20);
        make.height.mas_equalTo(180);
    }];
}

- (void)webImage
{
    [self.bgScrollView addSubview:self.webCycleScrollView];
    [self.webCycleScrollView mas_makeConstraints:^(MASConstraintMaker *make) {

        make.left.mas_equalTo(self.bgScrollView).with.offset(0);
        make.width.mas_equalTo(kWidth);
        make.top.mas_equalTo(self.localCycleScrollView.mas_bottom).with.offset(20);
        make.height.mas_equalTo(180);
    }];
}

- (void)cuatomPageControl
{
    [self.bgScrollView addSubview:self.customCycleScrollView];
    [self.customCycleScrollView mas_makeConstraints:^(MASConstraintMaker *make) {

        make.left.mas_equalTo(self.bgScrollView).with.offset(0);
        make.width.mas_equalTo(kWidth);
        make.top.mas_equalTo(self.webCycleScrollView.mas_bottom).with.offset(20);
        make.height.mas_equalTo(180);
    }];
}

- (void)onlyText
{
    [self.bgScrollView addSubview:self.textCycleScrollView];
    [self.textCycleScrollView mas_makeConstraints:^(MASConstraintMaker *make) {

        make.left.mas_equalTo(self.bgScrollView).with.offset(0);
        make.width.mas_equalTo(kWidth);
        make.top.mas_equalTo(self.customCycleScrollView.mas_bottom).with.offset(20);
        make.height.mas_equalTo(40);
    }];
}

#pragma mark - setter & getter

- (UIImageView *)bgImageView
{
    if (!_bgImageView)
    {
        self.bgImageView = [[UIImageView alloc] init];
        self.bgImageView.image = [UIImage imageNamed:@"005.jpg"];
    }
    return _bgImageView;
}

- (UIScrollView *)bgScrollView
{
    if (!_bgScrollView)
    {
        self.bgScrollView = [[UIScrollView alloc] init];
        self.bgScrollView.backgroundColor = [UIColor clearColor];

        self.bgScrollView.contentSize = CGSizeMake(kWidth, 1200);
    }
    return _bgScrollView;
}

#pragma mark 轮播
- (SDCycleScrollView *)localCycleScrollView
{
    if (!_localCycleScrollView)
    {
        NSArray * localImageArray = @[@"h1.jpg",
                                      @"h2.jpg",
                                      @"h3.jpg",
                                      @"h4.jpg",
                                      @"h7" // 本地图片请填写全名
                                      ];

        self.localCycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero shouldInfiniteLoop:YES imageNamesGroup:localImageArray];
        self.localCycleScrollView.delegate = self;
        self.localCycleScrollView.scrollDirection = UICollectionViewScrollDirectionHorizontal;
        self.localCycleScrollView.autoScrollTimeInterval = 1;
    }
    return _localCycleScrollView;
}

- (SDCycleScrollView *)webCycleScrollView
{
    if (!_webCycleScrollView)
    {
        self.webCycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero delegate:self placeholderImage:[UIImage imageNamed:@"placeholder"]];

        // 分页控件的位置
        self.webCycleScrollView.pageControlAliment = SDCycleScrollViewPageContolAlimentRight;

        // 标题
        self.webCycleScrollView.titlesGroup = @[@"1",@"2",@"3"];

        // 网络图片数组
        NSArray * imagesURLStrings = @[@"1",@"2",@"http://pic1.win4000.com/wallpaper/4/510f446941311.jpg"];
        self.webCycleScrollView.imageURLStringsGroup = imagesURLStrings;

    }
    return _webCycleScrollView;
}

- (SDCycleScrollView *)customCycleScrollView
{
    if (!_customCycleScrollView)
    {
        self.customCycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero delegate:self placeholderImage:[UIImage imageNamed:@"placeholder"]];

        self.customCycleScrollView.currentPageDotImage = [UIImage imageNamed:@"pageControlCurrentDot"];
        self.customCycleScrollView.pageDotImage = [UIImage imageNamed:@"pageControlDot"];

        // 网络图片数组
        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"
                                      ];
        self.customCycleScrollView.imageURLStringsGroup = imagesURLStrings;
    }
    return _customCycleScrollView;
}

- (SDCycleScrollView *)textCycleScrollView
{
    if (!_textCycleScrollView)
    {
        self.textCycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero delegate:self placeholderImage:nil];

        self.textCycleScrollView.scrollDirection = UICollectionViewScrollDirectionVertical;
        self.textCycleScrollView.onlyDisplayText = YES;

        self.textCycleScrollView.titlesGroup = @[@"第一个",@"第二个",@"第三个"];
    }
    return _textCycleScrollView;
}

@end
时间: 2024-10-15 12:41:31

iOS-图片轮播-SDCycleSCrollView的使用的相关文章

IOS 图片轮播实现原理 (三图)

IOS 图片轮播实现原理的一种 图片轮播所要实现的是在一个显示区域内通过滑动来展示不同的图片. 当图片较少时我们可以采用在滚动视图上添加很多张图片来实现. 但是如果图片数量较多时,一次性加载过多图片会浪费内存,影响性能. 因此我们要采取适当地方法来实现图片的轮播. 下面我们只是简单的介绍很多方法中的一种简单的实现原理. 一 二 三 四 五 六 七

iOS图片轮播

直接上代码了,比较简单.演示下载地址:Demo // // UYViewController.m // 图片轮播器 // // Created by jiangys on 15/5/23. // Copyright (c) 2015年 uxiaoyuan. All rights reserved. // #import "UYViewController.h" #define kImageCount 5 @interface UYViewController ()<UIScrol

IOS 图片轮播

#import <UIKit/UIKit.h> @interface ViewController : UIViewController @end #import "ViewController.h" @interface ViewController ()<UIScrollViewDelegate> @property(nonatomic, strong) NSTimer *timer; @end @implementation ViewController

IOS 05 UIScrollView介绍 图片轮播器

移动设备的屏幕?大?小是极其有限的,因此直接展?示在?用户眼前的内容也相当有限 当展?示的内容较多,超出?一个屏幕时,?用户可通过滚动?手势来查看屏幕以外的内容 普通的UIView不具备滚动功能,不能显?示过多的内容 UIScrollView是?一个能够滚动的视图控件,可以?用来展?示?大量的内容,并且可以通过滚 动查看所有的内容 在IOS中UIScrollView这个控件还是比较常用和重要的. 很多时候,我们想在UIScrollView正在滚动 或 滚动到某个位置 或者 停?止滚动 时做?一些

iOS开发项目实战——Swift实现图片轮播与浏览

最近开始开发一个新的iOS应用,自己决定使用Swift,进行了几天之后,发现了一个很严峻的问题,那就是不管是书籍,还是网络资源,关于Swift的实在是太少了,随便一搜全都是OC实现某某某功能.就算是找到Swift的资源,一看,大概是半年前的代码,或是一年前的代码,一运行,全都报错.这是由于毕竟Swift还是在不断发展完善当中,随着Swift2.0的开源以来,包括发布Swift这一年多以来,Swift的改动还是很大的,很多的接口或是语法前后有较大差异.有些功能只能自己硬生生看官方文档或挤破脑子想,

【iOS开发-62】自定义cell制作团购页面、顶部图片轮播、底部模拟加载更多功能,核心是练习代理模式

(1)效果 (2)案例源代码免费下载 团购页面+iOS源代码+头部广告轮播+底部加载更多 (3)补充 在源代码中,有一处瑕疵:就是因为是单线程,所以在上下拖动页面的时候,上面的图片轮播会停止.所以我们需要兼顾,解决方案,把定时器加到当前的runLoop中. 即在WPTgHeaderView.m的playOn方法中添加一行代码: -(void)playOn{ timer=[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector

【转】 iOS开发UI篇—UIScrollView控件实现图片轮播

原文:http://www.cnblogs.com/wendingding/p/3763527.html iOS开发UI篇—UIScrollView控件实现图片轮播 一.实现效果 实现图片的自动轮播            二.实现代码 storyboard中布局 代码: 1 #import "YYViewController.h" 2 3 @interface YYViewController () <UIScrollViewDelegate> 4 @property (w

ios开发图片轮播器以及定时器小问题

一:图片轮播器效果如图:能实现自动轮播,到最后一页时,轮播回来,可以实现拖拽滚动 二:代码: 1 #import "ViewController.h" 2 static CGFloat const imageCount = 5; 3 @interface ViewController ()<UIScrollViewDelegate> 4 /*scrollView*/ 5 @property (nonatomic,weak)UIScrollView *scroll; 6 /*

【iOS开发-55】图片轮播案例:scrollView的分页、滚动条、利用代理控制定时器和Page Control以及多线程问题

案例: (1)用storyboard布局,这里用了三样东西. --UIScrollView就是我们准备存放滚动图片的容器. --Page Control就是控制页数的那几个小点点.可以设置有多少个点,当前点和其他点的颜色等.注意它和UIScrollView是平级的,不是它的子视图. --还有一个textView是带有滚动的,用来测试多线程的.暂且随意拖放在页面中即可. (2)在ViewController.m中 --借助之前的scrollView属性,设置滚动范围 --借助新学习的scrollV

iOS开发UI篇—用纯代码写实现图片轮播

一.实现效果 实现图片的自动轮播 二.实现代码 1 // 手写图片轮播器 2 // 3 // Created by 鑫 on 14-10-9. 4 // Copyright (c) 2014年 梁镋鑫. All rights reserved. 5 // 6 #define TXImageCount 5 7 8 #import "TXViewController.h" 9 10 11 @interface TXViewController ()<UIScrollViewDeleg