swift首頁(yè)無(wú)限輪播 輕量級(jí)

swift首頁(yè)輪播 輕量級(jí) 易集成

sscycle.gif

輪播終結(jié)者,用swift完成,易于集成使用,下載圖片使用了SDWebImage
自己動(dòng)手用swift寫(xiě)了一個(gè),歡迎試用!github代碼地址

網(wǎng)上找了一些首頁(yè)輪播,寫(xiě)的或多或少有一些問(wèn)題,用著不舒服,自己用swift寫(xiě)了一個(gè)輪播控件,有如下特點(diǎn):

  • 下載圖片使用了SDWebImage,性能高
  • 輪播圖上需要點(diǎn)擊鏈接,只需要調(diào)用一個(gè)block便可加上點(diǎn)擊,易于集成
  • 支持webp格式圖片

使用方法

在Podfile加入以下:

use_frameworks!
pod 'SSCycleScrollView'

這個(gè)庫(kù)中支持了webp格式圖片,引入了SDWebImage庫(kù)。
下面可參考Demo中:
初始化時(shí),傳一個(gè)url的array,可以傳本地的圖片名字,也可以傳網(wǎng)絡(luò)圖片;
初始化一個(gè)SSCycleScrollView:

        self.mainScrollView = SSCycleScrollView.init(frame: currentRect, animationDuration: 3, inputImageUrls: self.scrollImageUrls)
        self.mainScrollView?.tapBlock = {index in
            print("tapped page\(index)")
        }

原理SSCycleScrollView

初始化后會(huì)啟動(dòng)一個(gè)定時(shí)器,repeat調(diào)用一個(gè)timerFired方法,方法中每次對(duì)scrollview加一個(gè)自己寬度的offset:

func timerFired() {
let xOffset = Int(self.contentOffset.x/kScreenWidth)
let xOffsetFloat = CGFloat(xOffset) * kScreenWidth
let newOffset = CGPointMake(xOffsetFloat + CGRectGetWidth(self.frame), self.contentOffset.y)
self.setContentOffset(newOffset, animated: true)
}

沒(méi)有直接加xOffset, 而是對(duì)其做了一個(gè)換算,確保每次加的offset是自己寬度的整數(shù)倍。
在scrollViewDidScroll方法,每次計(jì)算前一個(gè),當(dāng)前,后一個(gè)index,確保index范圍為index >= 0 && index < allImageArray.count, 每次滾動(dòng)后都會(huì)三個(gè)imageView中的image做重新賦值:

self.previousDisplayView?.image = self.allImageArray[previousArrayIndex]
self.currentDisplayView?.image = self.allImageArray[self.currentArrayIndex]
self.lastDisplayView?.image = self.allImageArray[lastArrayIndex]
self.contentOffset = CGPointMake(CGRectGetWidth(self.frame), 0)

上面最后一行設(shè)置contenOffset非常重要,每次把scrollView的位置重置為1個(gè)自身寬度的offset。

小結(jié)

如果你覺(jué)得有不好的地方,可以提出來(lái),大家一塊研究一下,歡迎常來(lái)我的倉(cāng)庫(kù),別忘記給個(gè)star!

微信公眾號(hào)

開(kāi)發(fā)者思維 devthinking

QQ交流群:295976280

iOS交流群(一)群二維碼.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容