推薦iOS開源輪播組件

推薦

App中不可或缺的廣告輪播圖組件,如今開源出來了,但願對你們有幫助!使用過程當中有出現任何bug,都會很快幫助解決!ios

image

有什麼特性

用一個第三方庫,首先須要瞭解這個三方庫有什麼特性,爲何值得使用它!看看下面的說明緊!git

特性1:無縫無限循環滾動

我相信每個想要本身寫這個無限滾動顯示廣告圖片的開發者,都會遇到這麼個問題:滾動到最後一張後,再切換到第一張時怎麼動畫效果這麼難看呢?根本就是到末尾後就直接切換到第一張,所以效果很不友好。github

HYBLoopScrollView就很好地解決了這個問題。這個庫使用了UICollectionView的特性,很巧妙地實現了這個無限滾動的效果。api

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

原來我也想使用別人的開源庫,可是使用起來很困難,一大堆的API,維護起來太麻煩。所以,才決定本身寫一套庫來解決這個麻煩。緩存

這裏提供了惟一地建立控件的方法:app

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

看到連同didSelect參數和didScroll參數了嗎?前者就是點擊某個廣告圖片時的回調block,然後者就是滾動到某個廣告時的回調,是否是很簡單?oop

支持定時器的控制

另外,還封裝了定時器的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,提供了下載圖片及緩存的功能,包括獲取緩存的大小、清空緩存、支持自動設置顯示成圓形頭像。atom

提供了公開的裁剪圖片的API:

/**
 *    @author 黃儀標
 *
 *    此處公開此API,是方便你們能夠在別的地方使用。等比例剪裁圖片大小到指定的size
 *
 *    @param image 剪裁前的圖片
 *    @param size    最終圖片大小
 *  @param isScaleToMax 是取最大比例仍是最小比例,YES表示取最大比例
 *
 *    @return 裁剪後的圖片
 */
+ (UIImage *)clipImage:(UIImage *)image toSize:(CGSize)size isScaleToMax:(BOOL)isScaleToMax;

支持自動處理圖片大小並緩存

若是但願將下載的圖片等比例縮放爲imageView的大小,則能夠設置爲YES:spa

/**
 *    @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吧!

想了解更詳細如何去使用,請閱讀:

http://www.henishuo.com/ios-open-source-hybloopscrollview/

相關文章
相關標籤/搜索