IOS UIWebView 下拉刷新功能的簡單實現

1.運行效果圖web

 

2.swift 代碼的實現 swift

import UIKitide

class RefreshWebViewController: UIViewController,UIScrollViewDelegate,UIWebViewDelegate{spa

 

 

    @IBOutlet weak var webView: UIWebView!blog

    //刷新控件viewanimation

     private var header:UIView!string

  //下拉到50時鬆開刷新it

    private let pullHeight:CGFloat=50io

//刷新提示文字class

    private var headerText:UILabel!

 //刷新指示器(旋轉小圓圈)

    private var activityView:UIActivityIndicatorView!

//標記刷新狀態

    private var isRefreshing=false

 

    override func viewDidLoad() {

        super.viewDidLoad()

        

        self.webView.scrollView.delegate=self

        self.webView.delegate=self

        self.automaticallyAdjustsScrollViewInsets=false

          initHeaderView()

        loading()

        

    }

  

    //定義下拉刷新控件

  private func initHeaderView( )  {

        

        self.header=UIView(frame: CGRectMake(0,0, self.view.frame.width,200))

        self.header.backgroundColor=UIColor.darkGrayColor()

        self.headerText=UILabel(frame: CGRectMake((self.view.frame.width-120)/2,10,150,30))

        self.headerText.text="下拉刷新"

        self.headerText.textAlignment=NSTextAlignment.Center

        self.headerText.textColor=UIColor.whiteColor()

        self.header.addSubview(headerText)

        self.activityView=UIActivityIndicatorView(frame: CGRectMake( self.headerText.frame.origin.x-5,15,20,20))

    

       self.header.addSubview(activityView)

        self.webView.insertSubview(header, atIndex: 0)

        

        

    }

 

    //加載網頁

    func loading( ) {

     

        self.webView.loadRequest(NSURLRequest(URL: NSURL(string:"http://www.hao123.com")!))

    }

    

    //scroll滾動時調用

    func scrollViewDidScroll(scrollView: UIScrollView) {

       

        if isRefreshing{

        

            return

        }

        //當下拉到pullHeight高度時鬆開便可刷新

        if scrollView.contentOffset.y <= -pullHeight{

         

        self.headerText.text="鬆開當即刷新"

        }else{

        

          self.headerText.text="下拉刷新"

        }

    }

 

//    scrollview中止滾動時調用

    func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {

      

        if isRefreshing{

        

            return

        }

        

        if scrollView.contentOffset.y <= -pullHeight{

       

            refreshing()

            

        }

    }

    

    //開始刷新

    func refreshing( )   {

        isRefreshing=true

        self.headerText.text="正在刷新..."

        self.activityView.startAnimating()

        UIView.animateWithDuration(0.5, delay: 0,   options: .CurveEaseOut, animations: {

           // 設置刷新控件停留

            var offY = self.webView.scrollView.contentInset            

            offY.top += self.pullHeight

            self.webView.scrollView.contentInset=offY

            

            }, completion:{(_)->Void in

                

                

        })

        

        self.loading()

    }

    

    //刷新結束

    func refreshEnd() {

        

         self.headerText.text="刷新成功"

         self.activityView.stopAnimating()

        UIView.animateWithDuration(1, delay: 0,   options: .CurveEaseOut, animations: {

            

             //恢復刷新控件到原始位置

            var offY = self.webView.scrollView.contentInset

            offY.top -= self.pullHeight

            self.webView.scrollView.contentInset=offY

            

            }, completion:{(_)->Void in

                

                self.isRefreshing=false

                self.headerText.text="下拉刷新"

                

        })

 

    }

    

    

    //網頁加載完成

    func webViewDidFinishLoad(webView: UIWebView) {

       

        if isRefreshing{

        

          refreshEnd()

        }

      

    }

}

相關文章
相關標籤/搜索