• Stars
    star
    625
  • Rank 71,862 (Top 2 %)
  • Language
    Objective-C
  • License
    MIT License
  • Created over 9 years ago
  • Updated almost 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

一行代码接入轮播组件,自带图片下载、缓存相关功能,无任何第三方依赖、轻量级组件。

#概述

开源项目名称:HYBLoopScrollView
开源项目目标:一键式集成轮播组件 当前版本:3.2.1

App中不可或缺的广告轮播图组件,现在开源出来了,希望对大家有帮助!使用过程中有出现任何bug,都会很快帮助解决!

image

#Version3.2.1

  • 更新至IPV6 only支持!

#有什么特性

用一个第三方库,首先需要了解这个三方库有什么特性,为什么值得使用它!看看下面的说明紧!

##特性1:无缝无限循环滚动

我相信每一个想要自己写这个无限滚动显示广告图片的开发者,都会遇到这么个问题:滚动到最后一张后,再切换到第一张时怎么动画效果这么难看呢?根本就是到末尾后就直接切换到第一张,因此效果很不友好。

HYBLoopScrollView就很好地解决了这个问题。这个库使用了UICollectionView的特性,很巧妙地实现了这个无限滚动的效果。

##特性2:直接使用block版本API

原来我也想使用别人的开源库,但是使用起来很困难,一大堆的API,维护起来太麻烦。因此,才决定自己写一套库来解决这个麻烦。

这里提供了唯一地创建控件的方法:

+ (instancetype)loopScrollViewWithFrame:(CGRect)frame
                              imageUrls:(NSArray *)imageUrls
                           timeInterval:(NSTimeInterval)timeInterval
                              didSelect:(HYBLoopScrollViewDidSelectItemBlock)didSelect
                              didScroll:(HYBLoopScrollViewDidScrollBlock)didScroll;

看到连同didSelect参数和didScroll参数了吗?前者就是点击某个广告图片时的回调block,而后者就是滚动到某个广告时的回调,是不是很简单?

###支持定时器的控制

另外,还封装了定时器的api,可方便地暂停或继续开启:

/**
 *  Pause the timer. Usually you need to pause the timer when the view disappear.
 */
- (void)pauseTimer;

/**
 *  Start the timer immediately. If you has pause the timer, you may need to start 
 *  the timer again when the view appear.
 */
- (void)startTimer;

###特性3:提供图片切换的淡入淡出效果

HYBLoadImageView类是继承于UIImageView,提供了下载图片及缓存的功能,包括获取缓存的大小、清空缓存、支持自动设置显示成圆形头像。

####提供了公开的裁剪图片的API:

/**
 *	@author 黄仪标
 *
 *	此处公开此API,是方便大家可以在别的地方使用。等比例剪裁图片大小到指定的size
 *
 *	@param image 剪裁前的图片
 *	@param size	最终图片大小
 *  @param isScaleToMax 是取最大比例还是最小比例,YES表示取最大比例
 *
 *	@return 裁剪后的图片
 */
+ (UIImage *)clipImage:(UIImage *)image toSize:(CGSize)size isScaleToMax:(BOOL)isScaleToMax;

####支持自动处理图片大小并缓存

如果希望将下载的图片等比例缩放为imageView的大小,则可以设置为YES:

/**
 *	@author 黄仪标
 *
 *	是否自动将下载到的图片裁剪为UIImageView的size。默认为NO。
 *  若设置为YES,则在下载成功后只存储裁剪后的image
 */
@property (nonatomic, assign) BOOL shouldAutoClipImageToViewSize;

####支持下载失败重试

对于一个链接,如果下载失败了,下一次再请求时,可以再去下载一次。默认为重试2次,如果超过2次,则不会再去下载:

/**
 *	@author 黄仪标
 *
 *	指定URL下载图片失败时,重试的次数,默认为2次
 */
@property (nonatomic, assign) NSUInteger attemptToReloadTimesForFailedURL;

##特性4:自带下载、缓存

内部自带了图片下载功能及图片缓存功能,并且在收到内存警告时,也会清理掉图片缓存。

##特性5:支持cocoapods

说到第三方库,怎么能少了对cocoapods的支持呢?

当前维护的版本已经到了version 3.0.0,可通过下面的方法添加到Podfile中:

pod "HYBLoopScrollView", '~> 3.0.0'

#版本变化

前一版本是2.2.5,依赖着AFNetworking这个第三方库,为了让本组件更加通用,在3.0.0版本去掉了第三方的依赖。而且在API上更加简化了,去掉了一些不必要的API。使用起来更简单,有多简单,请看下面:

HYBLoopScrollView *loop = [HYBLoopScrollView loopScrollViewWithFrame:CGRectMake(0, 40, 320, 120) imageUrls:images timeInterval:5 didSelect:^(NSInteger atIndex) {
    
} didScroll:^(NSInteger toIndex) {
    
}];

loop.shouldAutoClipImageToViewSize = YES;
loop.placeholder = [UIImage imageNamed:@"default.png"];
  
loop.alignment = kPageControlAlignRight;
loop.adTitles = titles;

[self.view addSubview:loop];

另外,3.0.0版本在点击轮播图和切换轮播图时不会将图片控制传回来了。只是返回图片位置。

#注意事项

有朋友说什么内存得不到释放的,请注意使用。看下面在block回调处,对Self是使用弱引用的,不然内存是得不到释放的。这是基本的内存循环引用问题,请大家注意:

// 请使用weakSelf,不然内存得不到释放
__weak __typeof(self) weakSelf = self;
HYBLoopScrollView *loop = [HYBLoopScrollView loopScrollViewWithFrame:CGRectMake(0, 40, 320, 120) imageUrls:images timeInterval:5 didSelect:^(NSInteger atIndex) {
	[weakSelf dismissViewControllerAnimated:YES completion:NULL];
} didScroll:^(NSInteger toIndex) {
    
}];

如果下载得到的图片的宽、高比与imageview的宽、高比不同,请不要设置下面的属性,或者设置为NO(默认就是NO):

loop.shouldAutoClipImageToViewSize = NO;

如果在调试过程中,设置了YES,发现图片未铺满整个imageview,就去掉上面设置的属性,或者设置为NO。然后记得调用清空缓存才能看到效果:

[loop clearImagesCache];

#致谢

该开源库至今已经得到不少朋友的邮件反馈,才有了今天的版本。感谢所有支持我的朋友!!!

#源代码

如果不想使用cocoapods来安装,可以到github下载源代码,直接将HYBLoopScrollView文件夹拖到工程,不需要做任何配置!!!

下载地址:HYBLoopScrollView

###喜欢就给个Star吧!

#版本历史

  • 3.2.1

    • 更新至IPV6 only支持!
  • 3.2.0

    • 由于有些小伙伴不太会用,导致图片不占满,所以此版本修改图片默认缩放模式为填充满
    • 增加page control小圆点大小可自由调整设置的功能
    • Demo中增加有导航条时,增加高度没有占满时的设置
  • 3.1.3

    • 优化内存,采用用完即释放的方式加载缓存图片,可降低内存的使用!
    • 去掉内存缓存,当同一个界面使用很多个轮播控件时,就不会内存暴涨
  • 3.1.2

    • 处理page control 点击后跳转不正常的问题
  • 3.1.1

    • fix timer bug, use core foundation timer add/remove from run loop
  • 3.1.0

    • 支持横屏、竖屏
    • 支持autolayout
    • 支持外部设置图片缩放参数contentMode
    • 分别缓存横屏、竖屏图片大小
  • 3.0.0

    • 去掉AFNetworking依赖
    • 增加自带图片下载及缓存功能
    • 增加图片自动剪裁功能
    • 简化API

#License

MIT LICENSE

More Repositories

1

HYBMasonryAutoCellHeight

A very helpful category for calculating the height of cell automatically.
Objective-C
680
star
2

HYBImageCliped

开源高效处理圆角的扩展,包括UIImageView、UIView、UIButton、UIImage的扩展API,可根据图片颜色生成图片带任意圆角,可给UIButton根据不同状态处理图片。所有生成图片都不会引起离屏渲染且不会引起离屏、图层混合,支持添加图片边框
Objective-C
639
star
3

HYBNetworking

基于AFNetworking3.0以上版本封装的网络层。提供常用的GET/POST接口、上传下载图片、文件接口、支持缓存等。
Objective-C
582
star
4

HYBHelperKit

日常开发必不可少的神器之一,UIBlockKit、UIMakerKit、UIKit、CommonKit、FoundationKit、Controllers、Constants等集于一身的神器!
Objective-C
448
star
5

HYBUnicodeReadable

解决打印日志对于Unicode编码不能正常显示中文的问题,只需要将文件导入工程,不需要引用,就能达到打印日志显示Unicode编码中文数据
Objective-C
354
star
6

HYBControllerTransitions

A helpful and very useful library for controller custom transition.Only an API can you finish many kind of animation for controller A to controller B.Though you don't understand any transition animations, it is ok!
Objective-C
320
star
7

MasonryDemo

学习Masonry各种用法
Objective-C
253
star
8

MDArtileFiles

241
star
9

WebViewJavascriptBridgeDemo

学习如何使用WebViewJavascriptBridge,配有详细的使用教程
Objective-C
154
star
10

IOSCallJsOrJsCallIOS

A good demo for iOS call js and js call ios native, using JavaScriptCore after iOS 7.0.
Objective-C
132
star
11

WKWebViewH5ObjCDemo

学习如何使用OC实现WKWebView与H5交互,并学习其API使用
Objective-C
101
star
12

DownloadManager

download demo
Objective-C
89
star
13

RuntimeDemo

学习Runtime
Objective-C
86
star
14

CollectionViewDemos

学习collectionview的所有例子,包括动画、布局等。
Objective-C
77
star
15

iOSLoadWebViewImage

Webview中的图片,使用ios原生来请求加载,然后使用webview显示
Objective-C
72
star
16

UIBezierPathLayerDemos

学习贝塞尔曲线及层动画相关
Objective-C
65
star
17

CellEmbedTableView

学习在cell中嵌套Tableview如何动态自动计算行高,自动适应内容的显示
Objective-C
58
star
18

HYBSnapkitAutoCellHeight

基于SnapKit写的自动计算cell的高度的扩展,对于喜欢纯代码自动布局的朋友们,你们有福利了
Swift
51
star
19

VideoCaptureDemo

VideoCaptureDemo
Objective-C
46
star
20

iOS-Socket-C-Version

学习OC的Socket编程,本demo是基于C语言原生API的
Objective-C
38
star
21

LocalPush

本地推送demo,处理了iOS8与IOS7之前的版本
Objective-C
37
star
22

CATransitionDemo

学习CATransition动画demo
Objective-C
36
star
23

NavigationBarScaleViewDemo

学习如何在系统的导航条上添加一个view,然后可以随着滚动而缩放。通常在很多的app中都采用了这种效果,主要是显示用户头像效果。
Objective-C
36
star
24

WKWebViewTestDemo

使用WKWebView
Swift
34
star
25

JokerMostRepository

Joker demo
Objective-C
26
star
26

StickyUpDownDemo

一个界面上有一个`headerView`、一个`toolbar`和一个`tableview`,在`tableview`向上滚动时,`headerView`和`toolbar`也向上移动,在`headerView`完全消失时,`toolbar`就固定在导航条下面,`tableview`就固定在`toolbar`下面。
Objective-C
26
star
27

HYBAttributedLabelCagegory

An very useful category of UILabel, for we can easily set style strings with HTML-like.
Objective-C
25
star
28

CALayerDemo

CALayer精讲对应的demo
Objective-C
24
star
29

PushPopTransitionDemo

学习Push/Pop转场效果
Objective-C
23
star
30

NavGestureDemo

验证如何同时支持leftBarButtonItem及右滑返回手势
Objective-C
22
star
31

ClockAnimationDemo

学习通过定时器和core animation来实现时钟动画
Objective-C
20
star
32

WebViewImgAutoFit

WebView加载HTML中的图片时,处理图片超过屏幕的问题,让图片自适应屏幕
Objective-C
20
star
33

SectionAnimation

利用UITableView的section实现像QQ那样的展开与收起的效果
Objective-C
18
star
34

BiaoGeMusicRepository

Objective-C
16
star
35

Charles_and_key

Charles 3.11.2及破解jar包
HTML
16
star
36

MultiSelectMutexDemo

在多选题处理中,A、B、C与D互斥和A与B互斥、C与D互斥学习如何处理。
Objective-C
16
star
37

IOSXMPPDemoByJackyHuang

实现了登录、注册、添加好友、删除好友、获取好友列表、发送消息、接收消息功能
Objective-C
13
star
38

ScrollViewAutolayoutDemo

使用sb/纯代码实现的自动布局demo,对新手很有帮助
Objective-C
12
star
39

ModalTransitionDemo

学习present/dismiss自定义转场动画
Objective-C
12
star
40

UITableViewEmbedUIWebViewDemo

UITableViewCell嵌入UIWebView,如何自适应高度问题学习
Objective-C
12
star
41

HYBTimerExtension

A convenience category of NSTimer.
Objective-C
10
star
42

HTMLImagePreviewDemo

HTML中点击图片预览
Objective-C
10
star
43

UMAnalyticsDemo

封装了友盟统计相关功能API,方便项目中调用
Objective-C
10
star
44

SwiftExtensionCodes

An extension of swift types, provided convenience api extension to use.
Swift
9
star
45

ITClient-Swift

IT JiangHu Client
Swift
9
star
46

SwiftImageView

use to download image and fade out when finished
Swift
9
star
47

BaiduMapDemo_v2.5.0

Objective-C
9
star
48

JPushDemo

极光推送简单应用
Objective-C
8
star
49

CollectionViewDemo

collection view demo
Objective-C
8
star
50

TextVeiw-Label-HTML-DEMO

练习UITextView和UILabel如何加载HTML内容
Objective-C
7
star
51

IOSAudioRemoteControl

Observe RemoteControl Event and handle it
Objective-C
6
star
52

iOSBlockUseDemo

尝试block内存引用问题
Objective-C
6
star
53

AppCommunicationDemo

学习应用之间如何互相调用,又如何传参数
Objective-C
6
star
54

HYBViewControllerCategory

扩展UIViewController,将常用的导航操作API、Tabbar API和NavigationBar API封装起来,适配iOS6.0及其以上版本
Objective-C
5
star
55

HLSStreamTools

HTTP Live Streaming segmenters tool.
4
star
56

PerformanceDemo

Objective-C
4
star
57

BlockDemos

学习block的所有demo
Objective-C
3
star
58

OSChinaIOSClient_Swift

OSChina ios client develop using swift
Objective-C
2
star
59

HYBUIViewExtension

an convenience category of UIView and a useful macro file
Objective-C
2
star
60

Swift2Demos

The demos of learning-swift2.0.
Swift
2
star
61

SwiftWeatherRepository

Using swift language to finish writing weather project
2
star
62

HYBDenyCrashKit

防止崩溃套件,对于测试和上线都很有用
1
star
63

UMessageDemo_Push

友盟推送测试demo
Objective-C
1
star
64

BiaoGeXMPPRepository

XMPP即时通讯类简单应用
Objective-C
1
star
65

HYBUIColorExtension

A convenience category of UIColor.
Objective-C
1
star
66

QueryPhoneDemo

PHP查询手机归属地小项目练习
PHP
1
star
67

HYBM3U8

正在开发中。。。
Objective-C
1
star
68

CollectionViewRepository

Using UICollectionView to layout views.
Objective-C
1
star
69

GCDDemos

学习GCD相关API的demo
Objective-C
1
star
70

SelectEmployeeDemo

Objective-C
1
star