1.創建滾動視圖(UIScrollView)
-
聲明為全局變量
var scr :UIScrollView! = nil
-
初始化及其屬性設置
scr = UIScrollView(frame: CGRect(x: 0, y: 100, width: self.view.frame.size.width, height: 300)) //設置內容區域大小 scr.contentSize = CGSize(width:self.view.frame.size.width * 5,height:300) //是否整頁翻動 scr.isPagingEnabled=true //觸壁反彈 scr.bounces=false //添加到主視圖 self.view.addSubview(scr)
-
將圖片添加到滾動視圖上
1.百度下載圖片,命名為1,2,3,4,5,格式為jpg,拖到工程中
2.代碼實現for index in 1...5 { //獲取圖片名字 let name = "\(index).jpg" let image = UIImage(named:name) let x = CGFloat(index - 1) * self.view.frame.size.width //初始化UIImageView let imageV = UIImageView(frame: CGRect(x:x, y:0, width: self.view.frame.size.width, height: 300.0)) //為image添加圖片 imageV.image = image //添加到滾動視圖上 scr.addSubview(imageV) scr.delegate = self // 設置代理 }
2.創建UIPageControl
-
聲明為全局變量
var page : UIPageControl! = nil
-
初始化及其屬性設置
//初始化UIPageControl page = UIPageControl(frame: CGRect(x: 100, y: 350, width: self.view.frame.size.width-200, height: 30)) //總共有多少頁 page.numberOfPages = 4 //當前是多少頁 page.currentPage = 0 //添加方法 page.addTarget(self, action: #selector(pageAction(page:)), for: .valueChanged) //未選中的滑塊顏色 page.pageIndicatorTintColor=UIColor.white //選中的滑塊顏色 page.currentPageIndicatorTintColor=UIColor.black //添加到主視圖 self.view.addSubview(page)
-
添加方法
func pageAction(page:UIPageControl){ let index = page.currentPage let point = CGPoint(x: CGFloat(index) * self.view.frame.size.width, y: 0) //修改偏移量 scr.setContentOffset(point, animated: true) }
3.創建Timer
-
聲明為全局變量
var timer : Timer! = nil
-
初始化
//每個屬性的含義 //1.間隔時間 //2.方法的執行對象 //3.執行的方法 //4.配置信息,類似備注 //5.true 循環執行 false 執行一次 self.timer=Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true) //開啟定時器 self.timer.fire()
-
添加方法
func timerAction(){ //獲取到當前的offset let offset = self.scr.contentOffset let width = self.view.frame.size.width //讓scrollerView進行滑動 scr.setContentOffset(CGPoint(x:offset.x + width,y:offset.y) , animated: true) //if 到第四個了,跳動到第一個 if scr.contentOffset.x >= width * 4 { let point = CGPoint(x: 0, y: 0)//第一個是0,0 scr.contentOffset = point } }
4.添加滑動會執行的方法
func scrollViewDidScroll(_ scrollView: UIScrollView) {
//獲取偏移量
let x = scr.contentOffset.x
let width = self.view.frame.size.width
//根據偏移量定位到第幾個點
if (x >= width * 4){
self.page.currentPage = 0
}else{
page.currentPage = Int(x / width)
}
}
5.添加開始拖拽、結束拖拽方法
//開始拖拽
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
self.timer.invalidate()
self.timer = nil
}
//結束拖拽
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
self.timer=Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true)
// 一秒之后再執行
let time = DispatchTime.now() + 1.0
DispatchQueue.main.asyncAfter(deadline:time){
if let _ = self.timer {
self.timer.fire()
}
}
}
6.效果圖
四張圖會自動播放