SWFIT3中banner定制2

在完成上述工作后,就可以進(jìn)入流程,首先我們確定初始化定時(shí)器后應(yīng)該在什么時(shí)候啟動(dòng)定時(shí)器,很明顯要有接口傳入的數(shù)據(jù)后才開始啟動(dòng),所以需要一個(gè)有接收并判斷的接口,這里我們用接收廣告的數(shù)量來實(shí)現(xiàn)

    //MARK:設(shè)置總頁數(shù)后,啟動(dòng)動(dòng)畫  
    func setTotalPagesCount(totalPageCout: (()->Int)) {
        self.totalPages = totalPageCout()
        print("totalPages = \(self.totalPages)")
        
        self.pageControl?.numberOfPages = self.totalPages!
        self.currentPageIndex = 0
        if self.totalPages == 1 {
            scrollView?.contentSize = CGSize(width: MAIN_WIDTH, height: self.bounds.size.height)
            configureContentViews()
            self.pageControl?.isHidden = true//如果只有一頁不需要顯示pageControl
            
        }else{
            self.pageControl?.isHidden = false
        }
        if self.totalPages! > 0 && self.totalPages! != 1 {
            configureContentViews()
            self.animationTimer?.resumeTimerAfterInterval(self.animationInterval!)
        }
        
        
    }

定時(shí)器啟動(dòng)

    func animationTimerDidFire(timer:Timer){
        let index = Int((self.scrollView?.contentOffset.x)!/MAIN_WIDTH)//防止視圖偏移
        self.scrollView?.setContentOffset(CGPoint(x: MAIN_WIDTH * CGFloat(index)+MAIN_WIDTH, y: 0),animated: true)
        
    }

獲取數(shù)據(jù)

    //獲取數(shù)據(jù)
    func setScrollViewDataSource () {
        let previousIndex = validateNextPageIndexWithPageIndex(index: self.currentPageIndex! - 1)
        let rearIndex = validateNextPageIndexWithPageIndex(index: self.currentPageIndex! + 1)
 
        self.contentViews.removeAll()
        
        if self.contentViewAtIndex != nil {
            self.contentViews.append(self.contentViewAtIndex!(previousIndex))//獲取數(shù)據(jù)的接口
            self.contentViews.append(self.contentViewAtIndex!(currentPageIndex!))
            self.contentViews.append(self.contentViewAtIndex!(rearIndex))
            
        }
        
    }

點(diǎn)擊響應(yīng)

    //點(diǎn)擊事件 
    func contentViewTapped(sender: UIGestureRecognizer){
        if self.tapActionBlock != nil {
            self.tapActionBlock!(self.currentPageIndex!)
        }
        
    }

此外一些常規(guī)的操作依賴于scollView的delegate來完成

    func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
        self.animationTimer?.pauseTimer()
    }
    func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
        self.animationTimer?.resumeTimerAfterInterval(self.animationInterval!)
    }
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        if scrollView.contentOffset.x >= (MAIN_WIDTH * CGFloat(2)) {
            self.currentPageIndex = validateNextPageIndexWithPageIndex(index:  self.currentPageIndex!+1)
            configureContentViews()
        }else if scrollView.contentOffset.x <= 0 {
            self.currentPageIndex = validateNextPageIndexWithPageIndex(index:  self.currentPageIndex!-1)
            configureContentViews()
        }
        
        self.pageControl?.currentPage = self.currentPageIndex!
    }
    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
        scrollView.setContentOffset(CGPoint(x: MAIN_WIDTH, y: 0), animated: true)
    }

ok,這就完成了一個(gè)banner的簡單封裝,如果有不足謝謝大家指導(dǎo)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,715評論 19 139
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,666評論 30 472
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 12,556評論 6 13
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,366評論 25 708
  • 我寫下 星辰飄灑的規(guī)律 寫下 種子和時(shí)針的距離 寫下 當(dāng)下的痛楚 和恒久的幸福 甚至寫下 被愛標(biāo)注的 權(quán)力和義務(wù) ...
    亂石齋主閱讀 473評論 5 2

友情鏈接更多精彩內(nèi)容