無限圖片輪播器 --- Objective-C

無限循環輪播器:

  • 本地圖片
  • 網絡圖片
  • 混合圖片(本地&&網絡)

Swift版本

SwiftBannerView

image.png

image.png

image.png

image.png

一.功能描述及要點

  • [x] 1.無限圖片輪播器,加載 '本地圖片' && '網絡圖片' && '本地和網絡的混合圖片'
  • [x] 2.修改成SDWebImage下載圖片
  • [x] 3.通過代理方法執行圖片的點擊事件
  • [x] 4.collectView工作原理實現無限滾動
  • [x] 5.設置UIPageControl的位置:(左,中,右) 以及顏色設置
  • [x] 6.設置自定義PageControl,位置:(左,中,右),自定義圖片
  • [x] 7.設置描述文字的位置:(左,中,右) 以及字體顏色,大小,背景顏色
  • [x] 8.多張圖片滾動時 文字的多種顯示樣式.單張圖片時的樣式
  • [x] 9.在控制器中 設置 self.automaticallyAdjustsScrollViewInsets = NO;讓scrollView自動適應屏幕
  • [x] 10.新增 當BannerView生成之后, 修改內部展示的圖片.
  • [x] 11.新增 Model的屬性,左右邊距 && 是否有圓角 (2018/05/04日更新)
  • [x] 12.新增 動態修改控制器的背景色 (2018/07/06日更新)

二.方法定義及調用

1.類方法創建BannerView:本地圖片和網絡圖片

// 本地圖片
+ (instancetype)bannerViewWithLocationImagesArr:(NSArray *)locationImgArr frame:(CGRect)frame
// 網絡圖片
+ (instancetype)bannerViewWithNetWorkImagesArr:(NSArray *)netWorkImgArr frame:(CGRect)frame
// 混合圖片 (網絡 || 本地圖片)
+ (instancetype)bannerViewWithBlendImagesArr:(NSArray *)blendImgArr frame:(CGRect)frame

2.設置bannerView的占位圖,定時器的時間

KNBannerViewModel *viewM = [[KNBannerViewModel alloc] init]; // 統一通過 設置 模型來設置 里面的參數
[viewM setIsNeedTimerRun:YES]; // 是否需要定時
[viewM setBannerTimeInterval:1]; // 改變 定時器時間
[viewM setPlaceHolder:[UIImage imageNamed:@"3"]]; // 設置占位圖

3.設置bannerView的PageControl的屬性

// 1.自定義 PageControl
KNBannerViewModel *viewM = [[KNBannerViewModel alloc] init]; // 統一通過 設置 模型來設置 里面的參數
NSArray *customPageImgArr = [NSArray arrayWithObjects:[UIImage imageNamed:@"pageControlSelected1"],[UIImage imageNamed:@"pageControlUnSelected1"], nil];
[viewM setPageControlImgArr:[customPageImgArr copy]]; // 設置自定義PageControl的兩張圖
[viewM setIsNeedPageControl:YES]; // 記得設置 YES
[viewM setPageControlStyle:KNBannerPageControlStyleMiddel]; // 設置pageControl 在居中

// 2.系統自帶PageControl
KNBannerViewModel *viewM = [[KNBannerViewModel alloc] init]; // 統一通過 設置 模型來設置 里面的參數
[viewM setIsNeedPageControl:YES]; // 默認系統PageControl
[viewM setPageControlStyle:KNBannerPageControlStyleMiddel]; // 設置pageControl 在居中

4.動態修改 bannerView 中的圖片

_bannerView1.netWorkImgArr = [self.changeArr mutableCopy];
_bannerView2.netWorkImgArr = [self.changeArr mutableCopy];
_bannerView3.netWorkImgArr = [self.changeArr mutableCopy];
    
[_bannerView1 reloadData];
[_bannerView2 reloadData];
[_bannerView3 reloadData];

5.1 讓 BannerView 無限循環 (2018-1-11 日更新)

[viewM setIsNeedCycle:YES]; // 讓bannerView 無限循環, 默認 不循環

5.2 BannerView 新增 左右邊距 和 是否有圓角 (2018-05-04更新)

[viewM setBannerCornerRadius:8]; // 切個圓角
[viewM setLeftMargin:10]; // 設置個邊距

5.3 讓BannerView 新增 滾動時, 動態修改 控制器一個控件的背景色(2018-07-06更新)

[viewM setBgChangeColorArr:self.colorArr.copy];

5.4 如果要對圖片的url 和 背景色進行修改時 注意:

// 重要重要重要 : 若要設置 背景色 ,必須寫在 圖片數組的前面
_bannerView1.changeColorArr = self.changeColorArr.mutableCopy;
_bannerView1.netWorkImgArr = [self.changeArr mutableCopy];
[_bannerView1 reloadData];

6.設置bannerView 介紹文字的屬性

KNBannerViewModel *viewM = [[KNBannerViewModel alloc] init]; // 統一通過 設置 模型來設置 里面的參數
[viewM setTextArr:[self.textArr copy]]; // 設置文字, 注意:如果文字和圖片的數量不相符,則沒有文字.如果不要文字,則不傳
[viewM setTextShowStyle:KNBannerViewTextShowStyleStay]; // 設置文字展示的樣式

6.圖片的點擊

1>遵守 KNBannerViewDelegate
2>設代理 bannerView.delegate = self;
3>點擊執行方法 - (void)bannerView:(KNBannerView *)bannerView collectionView:(UICollectionView *)collectionView collectionViewCell:(KNBannerCollectionViewCell *)collectionViewCell didSelectItemAtIndexPath:(NSInteger)index;
4>滾動執行方法 - (void)bannerView:(KNBannerView *)bannerView topColor:(UIColor *)topColor bottomColor:(UIColor *)bottomColor alpha:(CGFloat)alpha isRight:(BOOL)isRight
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,983評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,772評論 3 422
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,947評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,201評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,960評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,350評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,406評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,549評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,104評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,914評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,089評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,647評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,340評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,753評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,007評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,834評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,106評論 2 375

推薦閱讀更多精彩內容

  • swift:無限圖片輪播器 圖片輪播器用處很廣,什么廣告投放呀,新聞頭條滾動之類的,都是使用它。出于學習的目的用s...
    瘋狂的剁椒魚頭閱讀 7,314評論 22 27
  • 最近閑來無事,封裝了一個無限圖片輪播器,基于collectionView完成,抽取了兩個API,一個是創建輪播器,...
    打瞌睡de小男孩閱讀 807評論 2 5
  • 項目中很多時候會碰到這個需求,實現多張圖片的無限循環輪轉,以前做過,項目中幾個地方的都用到了,當時沒有封裝,幾個...
    jiangamh閱讀 431評論 0 3
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,155評論 4 61
  • 說一個人越是炫耀什么,則說明他越缺什么。這句話不完全對,但也確實有幾分道理。 套用一下可以變成“越是沒底氣的人,越...
    林易子閱讀 565評論 0 1