在app中滚动的广告视图是最常用的小模块之一,现在把一些自己制作的banner的重要部分写上来,与大家分享,当然这只是swift3以上的,OC的稍后也会分享,但是思路基本是一至的
首先制作banner少不了Timer,所以这里我给timer小小的扩展,方便与启动与暂停以及延时启动,这3个方法可以写到Timer的extension中去
func pauseTimer() {
if self.isValid {
self.fireDate = Date.distantFuture
}
}
func resumeTimer() {
if self.isValid {
self.fireDate = Date()
}
}
func resumeTimerAfterInterval(_ interval: TimeInterval ) {
if self.isValid {
self.fireDate = Date(timeIntervalSinceNow: interval)
}
}
然后是需要用到的关键属性
var scrollView: UIScrollView?
var currentPageIndex: Int?
var animationTimer: Timer?
var pageControl : (这里可以是你自己定制的pageControl类型)?
//block 两个方法主要用于数据输出和输出
var contentViewAtIndex : ((_ pageIndex: Int)->UIImageView)?
var tapActionBlock: ((_ pageIndex: Int)-> Void)?
//private
private var contentViews : [UIImageView] = []
var animationInterval : TimeInterval?
private var totalPages : Int?
接着需要在deinit中手动释放掉scrollView的delegate,至于原因,建议自己去踩
deinit {
scrollView?.delegate = nil
}
然后提供一个初始化的方法,需要将间隔时间,scrollView以及pageControl在初始化中实现,
init(frame: CGRect ,_ duration: TimeInterval) {
super.init(frame: frame)
}