制作輪播圖

1.創(chuàng)建滾動(dòng)視圖(UIScrollView)

  • 聲明為全局變量

    var scr :UIScrollView! = nil
    
  • 初始化及其屬性設(shè)置

    scr = UIScrollView(frame: CGRect(x: 0, y: 100,  width: self.view.frame.size.width, height: 300))
    //設(shè)置內(nèi)容區(qū)域大小
    scr.contentSize = CGSize(width:self.view.frame.size.width * 5,height:300)
    //是否整頁翻動(dòng)
    scr.isPagingEnabled=true
    //觸壁反彈
    scr.bounces=false
    //添加到主視圖
    self.view.addSubview(scr)
    
  • 將圖片添加到滾動(dòng)視圖上
    1.百度下載圖片退盯,命名為1钳垮,2贬堵,3呐矾,4,5导匣,格式為jpg阱飘,拖到工程中
    2.代碼實(shí)現(xiàn)

        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
            //添加到滾動(dòng)視圖上
            scr.addSubview(imageV)
            scr.delegate = self // 設(shè)置代理
        }
    

2.創(chuàng)建UIPageControl

  • 聲明為全局變量

    var page : UIPageControl! = nil
    
  • 初始化及其屬性設(shè)置

    //初始化UIPageControl
    page = UIPageControl(frame: CGRect(x: 100, y: 350, width: self.view.frame.size.width-200, height: 30))
       //總共有多少頁
       page.numberOfPages = 4
       //當(dāng)前是多少頁
       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.創(chuàng)建Timer

  • 聲明為全局變量

    var timer : Timer! = nil
    
  • 初始化

    //每個(gè)屬性的含義
         //1.間隔時(shí)間
         //2.方法的執(zhí)行對(duì)象
         //3.執(zhí)行的方法
         //4.配置信息渠欺,類似備注
         //5.true 循環(huán)執(zhí)行 false 執(zhí)行一次
    self.timer=Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true)
    //開啟定時(shí)器    
    self.timer.fire()
    
  • 添加方法

    func timerAction(){
         //獲取到當(dāng)前的offset
         let offset = self.scr.contentOffset
         let width = self.view.frame.size.width
         //讓scrollerView進(jìn)行滑動(dòng)
         scr.setContentOffset(CGPoint(x:offset.x + width,y:offset.y) , animated: true)
       //if 到第四個(gè)了,跳動(dòng)到第一個(gè)
         if scr.contentOffset.x >= width * 4 {
             let point = CGPoint(x: 0, y: 0)//第一個(gè)是0罗丰,0
             scr.contentOffset = point
         }
     }
    
    

4.添加滑動(dòng)會(huì)執(zhí)行的方法

func scrollViewDidScroll(_ scrollView: UIScrollView) {
     //獲取偏移量
     let x = scr.contentOffset.x
     let width = self.view.frame.size.width
     //根據(jù)偏移量定位到第幾個(gè)點(diǎn)
     if (x >= width * 4){
         self.page.currentPage = 0
     }else{
      page.currentPage = Int(x / width)
     }
}

5.添加開始拖拽神帅、結(jié)束拖拽方法

//開始拖拽
 func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
     self.timer.invalidate()
     self.timer = nil
 }
 //結(jié)束拖拽
 func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
      self.timer=Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true)
     // 一秒之后再執(zhí)行
     let time =  DispatchTime.now() + 1.0
     DispatchQueue.main.asyncAfter(deadline:time){
         if let _ = self.timer {
          self.timer.fire()
         }
     }
    
 }

6.效果圖

四張圖會(huì)自動(dòng)播放


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市萌抵,隨后出現(xiàn)的幾起案子找御,更是在濱河造成了極大的恐慌元镀,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霎桅,死亡現(xiàn)場離奇詭異栖疑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)滔驶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門遇革,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人揭糕,你說我怎么就攤上這事萝快。” “怎么了著角?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵揪漩,是天一觀的道長。 經(jīng)常有香客問我吏口,道長奄容,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任产徊,我火速辦了婚禮昂勒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘囚痴。我一直安慰自己叁怪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布深滚。 她就那樣靜靜地躺著奕谭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪痴荐。 梳的紋絲不亂的頭發(fā)上血柳,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音生兆,去河邊找鬼难捌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛鸦难,可吹牛的內(nèi)容都是我干的根吁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼合蔽,長吁一口氣:“原來是場噩夢啊……” “哼击敌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拴事,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤沃斤,失蹤者是張志新(化名)和其女友劉穎圣蝎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衡瓶,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡徘公,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哮针。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片关面。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖诚撵,靈堂內(nèi)的尸體忽然破棺而出缭裆,到底是詐尸還是另有隱情,我是刑警寧澤寿烟,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布澈驼,位于F島的核電站,受9級(jí)特大地震影響筛武,放射性物質(zhì)發(fā)生泄漏缝其。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一徘六、第九天 我趴在偏房一處隱蔽的房頂上張望内边。 院中可真熱鬧,春花似錦待锈、人聲如沸漠其。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽和屎。三九已至,卻和暖如春春瞬,著一層夾襖步出監(jiān)牢的瞬間柴信,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國打工宽气, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留随常,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓萄涯,卻偏偏與公主長得像绪氛,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子涝影,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容