原理:
總共只用三個UIImageView类溢,放在一個UIScrollView上≌钙纾滑動后秦爆,更換前后的圖片,并把ContentOffset設(shè)置成顯示中間圖片的數(shù)值宙彪,這樣就可以無限左右滑動了矩动。
- 首先賦值: 顯示三個image,把數(shù)據(jù)源中的第一個Image賦值在中間的UIImageView上,兩邊依次找到應(yīng)該賦值的image释漆。
// 得到上一張圖片的下標(biāo)
private func getLastImageIndex(indexOfCurrentImage index: Int) -> Int{
var tempIndex = index - 1
if tempIndex == -1 {
return self.imageArray.count - 1
}else{
return tempIndex
}
}
// 得到下一張圖片的下標(biāo)
private func getNextImageIndex(indexOfCurrentImage index: Int) -> Int
{
var tempIndex = index + 1
return tempIndex < self.imageArray.count ? tempIndex : 0
}
- 更改數(shù)據(jù): 滑動后悲没,把數(shù)據(jù)源中應(yīng)該顯示的image賦值在中間的UIImageView上,然后更改兩邊的UIImageView上的數(shù)據(jù)男图,把scrollView的contentOffset的偏移量設(shè)為顯示中間圖片的偏移量(賦值后肉眼根本無法分辨示姿,但是用戶又可以左右滑動了,這就造成了無限循環(huán)滑動的假象)享言。
描述:
swift版的無限循環(huán)輪播圖峻凫,可自定義時間間隔渗鬼,設(shè)置本地览露、遠(yuǎn)端圖片或混設(shè),目前配合Kingfisher一起使用(url圖片賦值ImageView和緩存)譬胎。
功能:
無限循環(huán)輪播
圖片點(diǎn)擊閉包
本地差牛、遠(yuǎn)端圖片混設(shè)
支持code、xib堰乔、storyboard調(diào)用
支持旋轉(zhuǎn)
支持iPhone偏化、iPad
運(yùn)行展示圖:
iPhone:
iPad:
安裝:
下載后直接把GLLoopView文件夾(里面有CircleView.swift和CircleView.xib2個文件)拉進(jìn)項(xiàng)目中。
(因有xib文件镐侯,支持cocoapods在storyboard和xib中使用時侦讨,會報編譯錯誤,對運(yùn)行無影響,所以暫緩支持cocoapods)
pod添加kingfisher(或者其它方法)
使用方法:
xib || storyboard:
let imageArray: [GLImageModel] = [GLImageModel("first.jpg", type: .local), GLImageModel("second.jpg", type: .local), GLImageModel("third.jpg", type: .local)]
self.circleView.imageModelArray = imageArray
self.circleView.timeInterval = 5
self.circleView.clickCircleViewClosure = { currentIndex in
print(currentIndex, terminator: " ");
}
code: (能用可視化就用可視化韵卤,不要再代碼創(chuàng)建了)
let imageArray: [GLImageModel] = [GLImageModel("first.jpg", type: .local), GLImageModel("second.jpg", type: .local), GLImageModel("third.jpg", type: .local)]
self.circleView = GLCircleView(frame: CGRect(x: 0, y: 64, width: self.view.frame.size.width, height: 200))
self.circleView.imageModelArray = imageArray
self.circleView.timeInterval = 5
self.circleView.clickCircleViewClosure = { currentIndex in
print(currentIndex, terminator: " ");
}
self.view.addSubview(circleView)
添加:
let urlImageModel = GLImageModel(self.circleView.imageModelArray.count % 2 == 0 ? url1 : url2, type: .url)
self.circleView.imageModelArray.append(urlImageModel)
demo中注釋很清晰
github: swift無限自動循環(huán)輪播圖