关于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若为弱引用,它将不继续走子线程,所以要使用强引用的变量

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容