关于iOS swift3.0 UICollectionView封装引导页和轮播图

关于swift封装的轮播图和引导页请看链接blog.csdn.net/cheniOSjourney/article/details/69864520


在链接中已经很清楚,这里说下遇到的一些坑,以备参考:

1.重中之重,因为在demo中我用的是GCD定时器所以在定义timer变量的时候,

/// 循环(轮播图模式)

if pageYesAndNo == true {

// 定义需要计时的时间

var timeCount = 0

// 在global线程里创建一个时间源

timer = DispatchSource.makeTimerSource(queue:DispatchQueue.global())

// 设定这个时间源是每秒循环一次,立即开始

timer?.scheduleRepeating(deadline: .now() , interval: .seconds(pageSeconds))

// 设定时间源的触发事件

timer?.setEventHandler {

// 每秒计时一次

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触发事件中,timeCount若为弱引用,它将不继续走子线程,所以要使用强引用的变量

你可能感兴趣的:(关于iOS swift3.0 UICollectionView封装引导页和轮播图)