關(guān)于swift封裝的輪播圖和引導(dǎo)頁請看鏈接blog.csdn.net/cheniOSjourney/article/details/69864520
在鏈接中已經(jīng)很清楚捆愁,這里說下遇到的一些坑萄传,以備參考:
1.重中之重杂伟,因?yàn)樵赿emo中我用的是GCD定時器所以在定義timer變量的時候描函,
/// 循環(huán)(輪播圖模式)
if pageYesAndNo == true {
// 定義需要計(jì)時的時間
var timeCount = 0
// 在global線程里創(chuàng)建一個時間源
timer = DispatchSource.makeTimerSource(queue:DispatchQueue.global())
// 設(shè)定這個時間源是每秒循環(huán)一次活逆,立即開始
timer?.scheduleRepeating(deadline: .now() , interval: .seconds(pageSeconds))
// 設(shè)定時間源的觸發(fā)事件
timer?.setEventHandler {
// 每秒計(jì)時一次
timeCount = timeCount + 1
// 返回主線程處理一些事件审编,更新UI等等
DispatchQueue.main.async {
let offset = CGPoint(x: CGFloat(timeCount % self.imgNameArray.count) * (self.collectionView?.bounds.width)!, y: 0)
self.collectionView?.setContentOffset(offset, animated: true)
self.pageControl.currentPage = timeCount % self.imgNameArray.count
debugPrint("2222")
}
}
// 啟動時間源
timer?.resume()
在timer觸發(fā)事件中,timeCount若為弱引用次员,它將不繼續(xù)走子線程败许,所以要使用強(qiáng)引用的變量