最簡(jiǎn)單方便的iOS輪播開(kāi)源庫(kù):JYCarousel

前言

最近林丹出軌的事件占據(jù)頭條验残。其實(shí)圈內(nèi)的事就那么回事吧,我們平時(shí)身邊這種事情也很多巾乳,只是我們不是公眾人物您没,就算有也不會(huì)很多人知道。還是找個(gè)程序猿當(dāng)老公好啊想鹰,絕對(duì)不會(huì)出軌哦紊婉。如果凌晨3點(diǎn)你老公還沒(méi)回家药版,那他準(zhǔn)是在寫(xiě)代碼辑舷,我為我自己代言_

今天我要推薦一個(gè)輪播開(kāi)源庫(kù)JYCarousel。如果中間使用過(guò)程中有任何的問(wèn)題可以聯(lián)系我槽片,我會(huì)盡快處理解決何缓,給你們一個(gè)簡(jiǎn)單方便的使用體驗(yàn)。

輪播組件:JYCarousel

開(kāi)源庫(kù)名稱(chēng): JYCarousel

開(kāi)源庫(kù)當(dāng)前版本: 0.0.1

開(kāi)源庫(kù)github地址:https://github.com/Delyer/JYCarousel

開(kāi)源庫(kù)簡(jiǎn)介: 這是一個(gè)使用起來(lái)非常簡(jiǎn)單的開(kāi)源輪播庫(kù)还栓,自帶下載和緩存碌廓,不會(huì)造成循環(huán)引用,不用考慮定時(shí)器不會(huì)銷(xiāo)毀(我都已經(jīng)幫你做好了)剩盒。

JYCarouselIcon.png

1. JYCarousel 使用方式

  • 1.直接下載工程谷婆,把包含源代碼的文件夾JYCarousel引入工程即可使用

  • 2.支持cocoapods。當(dāng)前版本0.0.1 在Podfile文件中添加以下文字即可:

pod 'JYCarousel', '~> 0.0.1'
當(dāng)前版本0.0.1.png

2. 輪播基本原理

使用三個(gè)imageView添加到ScrollView辽聊,始終保持中間的imageView在可視界面里纪挎。當(dāng)前的imageView滾動(dòng)到下一個(gè)imageView,然后把下一個(gè)imageView滾動(dòng)到三個(gè)imageView的中心位置跟匆,在這過(guò)程中賦值的時(shí)候是三個(gè)imageView同時(shí)賦值异袄,滾動(dòng)的時(shí)候找到最中間的imageView烤蜕,把這個(gè)imageView的tag值設(shè)置為當(dāng)前的索引,滾動(dòng)完成后把這個(gè)imageView設(shè)置為中心滾動(dòng)位置虎忌。

比如三張圖A呐籽、B蚀瘸、C贮勃。要做的scrollview實(shí)際上應(yīng)該是五張的大小順序是C、A奏瞬、B硼端、C寓搬、A。初始偏移量設(shè)置到第二張镣典,監(jiān)聽(tīng)scrollview滑動(dòng)事件兄春。判斷偏移量赶舆。當(dāng)偏移量在第一張時(shí)將偏移量修改到第四張祭饭,當(dāng)偏移量在第五張時(shí)將偏移量調(diào)整到第二章。這樣在循環(huán)時(shí)比較流暢夕晓,才能無(wú)縫無(wú)限循環(huán)滾動(dòng)

JYCarouselAnimation.gif

3. 輪播的特性

  • 無(wú)縫循環(huán)輪播蒸辆,處理的很好,不會(huì)顯得生硬

  • 自帶圖片下載和緩存谆奥,不依賴(lài)任何第三方酸些,引入即可使用檐蚜,不用任何配置

  • 支持block方式和delegate方式,使用起來(lái)巨方便

  • 隨時(shí)根據(jù)需要清除緩存

  • 采用disk緩存闯第,不會(huì)占用app內(nèi)存,釋放你的app內(nèi)存

  • 可以隨時(shí)更新輪播數(shù)據(jù)填帽,完美切換,[carouselView startCarouselWithArray:imageArray];

  • 用戶(hù)可自定義的屬性多篡腌,具體見(jiàn)配置文件JYConfiguration

  • 支持輪播翻頁(yè)的各種動(dòng)畫(huà)

4. 代碼文件結(jié)構(gòu)和功能

JYCarousel

  • JYCarousel
    • 作用:輪播組件的創(chuàng)建和開(kāi)始
  • JYConfiguration
    • 作用:輪播組件的自定義配置嘹悼,配置你想要的效果
  • JYPageControl
    • 作用:輪播組件的指示器樣式
  • JYWeakTimer
    • 作用:輪播組件的弱引用定時(shí)器绘迁,解決NSTimer不能銷(xiāo)毀的問(wèn)題
  • UIImageView+JYImageViewManager
    • 作用:imageView請(qǐng)求網(wǎng)絡(luò)圖片的分類(lèi)
  • JYImageDownloader
    • 作用:請(qǐng)求網(wǎng)絡(luò)圖片
  • JYImageCache
    • 作用:網(wǎng)絡(luò)圖片的緩存
  • JYCarouselAnimation
    • 作用:輪播翻頁(yè)的效果動(dòng)畫(huà)
JYCarouselStruct.png

5. 輪播組件的使用

提供兩個(gè)初始化方法:

/**
 block方式回調(diào)初始化
 @param frame       frame
 @param configBlock 輪播屬性配置
 @param clickBlock  點(diǎn)擊回調(diào)
 @return carousel
 */
- (instancetype)initWithFrame:(CGRect)frame
                  configBlock:(CarouselConfigurationBlock)configBlock
                   clickBlock:(CarouselClickBlock)clickBlock;


/**
 delegate方式回調(diào)初始化
 @param frame       frame
 @param configBlock 輪播屬性配置
 @param target      delegate
 @return carousel
 */
- (instancetype)initWithFrame:(CGRect)frame
                  configBlock:(CarouselConfigurationBlock)configBlock
                       target:(id<JYCarouselDelegate>)target;

使用舉例:

1.block回調(diào)方式創(chuàng)建:
- (void)addCarouselView1{
    __weak typeof(self) weakSelf = self;
    //圖片數(shù)組(或者圖片URL,圖片URL字符串哮奇,圖片UIImage對(duì)象)
    NSMutableArray *imageArray = [[NSMutableArray alloc] initWithArray: @[@"1.jpg",@"2.jpg",@"3.jpg",@"4.jpg"]];
   JYCarousel *carouselView = [[JYCarousel alloc] initWithFrame:CGRectMake(0, 64, ViewWidth(self.view), 100) configBlock:^JYConfiguration *(JYConfiguration *carouselConfig) {          
         //配置指示器類(lèi)型
        carouselConfig.pageContollType = LabelPageControl;
        //配置輪播時(shí)間間隔
        carouselConfig.interValTime = 3;
        //配置輪播翻頁(yè)動(dòng)畫(huà)
        carouselConfig.pushAnimationType = PushCube;
        //配置動(dòng)畫(huà)方向
        carouselConfig.animationSubtype = kCATransitionFromRight;
        return carouselConfig;
    } clickBlock:^(NSInteger index) {
          //點(diǎn)擊imageView回調(diào)方法
        [weakSelf clickIndex:index];
    }];
    //開(kāi)始輪播
    [carouselView startCarouselWithArray:imageArray];
    [self.view addSubview:carouselView];
}
2.delegate回調(diào)方式創(chuàng)建:
//遵循協(xié)議
@interface SubViewController ()<JYCarouselDelegate>

//創(chuàng)建
- (void)addCarouselView{
    NSMutableArray *imageArray = [[NSMutableArray alloc] initWithArray: @[@"1.jpg",@"2.jpg",@"3.jpg",@"4.jpg"]];
    
    JYCarousel *carouselView = [[JYCarousel alloc] initWithFrame:CGRectMake(0, 540, ViewWidth(self.view), 100) configBlock:^JYConfiguration *(JYConfiguration *carouselConfig) {
        carouselConfig.pageContollType = LeftPageControl;
        carouselConfig.interValTime = 3.0;
        carouselConfig.pushAnimationType = PushCameraIrisHollowOpen;
        carouselConfig.backViewImage = [UIImage imageNamed:@"default"];
        return carouselConfig;
    } target:self];
    
    //開(kāi)始輪播
    [carouselView startCarouselWithArray:imageArray];
    [self.view addSubview:carouselView];
}

//回調(diào)方法
- (void)carouselViewClick:(NSInteger)index{
    NSLog(@"代理方式你點(diǎn)擊圖片索引index = %ld",index);
    //清楚緩存數(shù)據(jù) 可以在app啟動(dòng)的時(shí)候清楚上一次輪播緩存,根據(jù)自己需要
    [[JYImageCache sharedImageCache] jy_clearDiskCaches];
}

6. 注意事項(xiàng)

內(nèi)存得不到釋放造成內(nèi)存泄露,使用循環(huán)引用了辩涝。請(qǐng)注意使用∽叫希看下面在block回調(diào)處,對(duì)Self是使用弱引用的宠进,不然內(nèi)存是得不到釋放的藐翎。
<pre>
// 請(qǐng)使用weakSelf,不然內(nèi)存得不到釋放
__weak typeof(self) weakSelf = self;
//圖片數(shù)組(或者圖片URL堤器,圖片URL字符串吼旧,圖片UIImage對(duì)象)
NSMutableArray *imageArray = [[NSMutableArray alloc] initWithArray: @[@1.jpg,@2.jpg,@3.jpg,@4.jpg]];
JYCarousel *carouselView = [[JYCarousel alloc] initWithFrame:CGRectMake(0, 64, ViewWidth(self.view), 100) configBlock:nil clickBlock:NSInteger index {
//點(diǎn)擊imageView回調(diào)方法
[weakSelf clickIndex:index];
}];
//開(kāi)始輪播
[carouselView startCarouselWithArray:imageArray];
[self.view addSubview:carouselView];
</pre>

7. 下個(gè)版本預(yù)告

  • 添加啟動(dòng)超時(shí)自動(dòng)清除緩存功能
  • 添加titlLabel標(biāo)簽等

喜歡就給個(gè)Star吧圈暗!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末员串,一起剝皮案震驚了整個(gè)濱河市昼扛,隨后出現(xiàn)的幾起案子抄谐,更是在濱河造成了極大的恐慌,老刑警劉巖毅厚,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吸耿,死亡現(xiàn)場(chǎng)離奇詭異酷窥,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)妆棒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)蛋铆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)放接,“玉大人,你說(shuō)我怎么就攤上這事玛瘸」兜福” “怎么了慧脱?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵菱鸥,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我殷绍,道長(zhǎng)鹊漠,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任登钥,我火速辦了婚禮牧牢,結(jié)果婚禮上固蛾,老公的妹妹穿的比我還像新娘艾凯。我一直安慰自己,他們只是感情好趾诗,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布恃泪。 她就那樣靜靜地躺著,像睡著了一般情连。 火紅的嫁衣襯著肌膚如雪览效。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天挽拔,我揣著相機(jī)與錄音螃诅,去河邊找鬼状囱。 笑死,一個(gè)胖子當(dāng)著我的面吹牛亭枷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播匹表,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼袍镀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼冻晤!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起设江,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤叉存,失蹤者是張志新(化名)和其女友劉穎度帮,沒(méi)想到半個(gè)月后稿存,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體瓣履,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡袖迎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年腺晾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脯宿。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡连霉,死狀恐怖嗡靡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情讨彼,我是刑警寧澤哈误,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布蜜自,位于F島的核電站,受9級(jí)特大地震影響箭阶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜仇参,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一诈乒、第九天 我趴在偏房一處隱蔽的房頂上張望鸣皂。 院中可真熱鬧暮蹂,春花似錦癌压、人聲如沸荆陆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)浓体。三九已至,卻和暖如春命浴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背媳溺。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工悬蔽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留捉兴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓难衰,卻偏偏與公主長(zhǎng)得像盖袭,于是被迫代替她去往敵國(guó)和親彼宠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,161評(píng)論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件倍踪、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,105評(píng)論 4 62
  • 2月2日早晨醒來(lái),阿根廷的夏天扩借,雷雨交加缤至,早餐后去了馬拉多納所在球隊(duì)的博卡俱樂(lè)部,因?yàn)橛晏旒档剑饕谏虉?chǎng)購(gòu)物...
    東觀閱讀 217評(píng)論 2 3
  • 當(dāng)你什么都可以自給自足何恶,當(dāng)你物質(zhì)上能滿(mǎn)足自己的需求嚼黔,你對(duì)他沒(méi)有過(guò)多的要求,你自始至終都只想要他而已隔崎!你溫柔大方爵卒,善...
    鄧幺妹兒閱讀 235評(píng)論 0 0