您的位置:首页 > 移动开发 > Swift

swift浏览器

2017-01-08 19:34 381 查看
 UIBarButtonItem有五种初始化方法

1、 UIBarButtonItem.init(image: UIImage?, style: UIBarButtonItemStyle, target: Any?, action: Selector?) 初始化一个普通的图片按钮

2、 UIBarButtonItem.init(image: UIImage?, landscapeImagePhone: UIImage?, style: UIBarButtonItemStyle, target: Any?, action: Selector?)初始化一个普通的图片按钮,但是为了提供一个备选团横屏使用

3、UIBarButtonItem.init(title: String?, style: UIBarButtonItemStyle, target: Any?, action: Selector?)普通的按钮的文本按钮初始化方法

4 UIBarButtonItem.init(barButtonSystemItem: UIBarButtonSystemItem, target: Any?, action: Selector?)初始化方法,提供了一些预置的按钮类型,供你选择,比如撤销、重做、编辑等

5、UIBarButtonItem.init(customView: UIView) 实在没有你想要的按钮类型和样式?你可以让这个按钮编程任意一个UIView

import UIKit

class ViewController: UIViewController,UIWebViewDelegate,UITextFieldDelegate {

    @IBOutlet weak var btngo: UIButton!

    

    @IBOutlet weak var webview: UIWebView!

    

    

    @IBOutlet weak var txturl: UITextField!

    

    @IBOutlet weak var loadIndicator: UIActivityIndicatorView!

    var ptimer : Timer!

    var progBar:UIProgressView!

    

    

    

    override func viewDidLoad() {

        super.viewDidLoad()

        webview.backgroundColor = UIColor.gray

        btngo.isEnabled = false

       loadIndicator.isHidden = true

     self.webview.delegate = self

        loadIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.gray

        txturl.delegate = self

        

        setUPBrowserToolBar()

        

 

    }

    

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {

        textField.resignFirstResponder()

        let  url = textField.text

        loadUrl(url: url!)

        return true

    }

    func loadUrl(url:String) {

        let urlobj = URL.init(string: url)

        let  rquest = URLRequest.init(url: urlobj!)

        webview.loadRequest(rquest)

 

    }

    

    

    

    @IBAction func goClicked(_ sender: Any) {

        txturl.resignFirstResponder()

        let url = txturl.text

        loadUrl(url: url!)

        

    }

    func webViewDidStartLoad(_ webView: UIWebView) {

        progBar.setProgress(0, animated: false)

        ptimer.fire()

        loadIndicator.startAnimating()

        loadIndicator.isHidden = false

    }

    func webViewDidFinishLoad(_ webView: UIWebView) {

        loadIndicator.stopAnimating()

         loadIndicator.hidesWhenStopped = true

        progBar.setProgress(1, animated: true)

        ptimer.invalidate()

    }

    func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {

        loadIndicator.stopAnimating()

         loadIndicator.hidesWhenStopped = true

        print("出错了")

    }

    func setUPBrowserToolBar(){

      //创建一个浏览器工具条,并设置它的大小和位置

        let browserToolBar = UIToolbar.init(frame: CGRect.init(x: 0, y: 50, width: self.view.frame.size.width, height: 30))

         self.view.addSubview(browserToolBar)

        //创建图片工具条,但是不是直接使用文件名,而是用NSData方式初始化UIImage

     

        let backtn = UIBarButtonItem.init(title: "返回", style: UIBarButtonItemStyle.plain, target: self, action: #selector(backClicked(_:)))

        //第一个分隔按钮

        let btngap1 = UIBarButtonItem.init(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)

        

        //创建前进按钮

        let btnforward = UIBarButtonItem.init(title: "前进", style: UIBarButtonItemStyle.plain, target: self, action: #selector(forwardClicked(_:)))

        //第二个分隔按钮

        let btngap2 = UIBarButtonItem.init(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)

        //重新加载按钮

        let btnreload =  UIBarButtonItem.init(title: "刷新", style: UIBarButtonItemStyle.plain, target: self, action: #selector(reloadClick(_:)))

         //第三个分隔按钮

        let btngap3 = UIBarButtonItem.init(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)

        //创建加载停止按钮

         let btnstop =  UIBarButtonItem.init(title: "停止", style: UIBarButtonItemStyle.plain, target: self, action: #selector(stopClick(_:)))

        //第四个分隔按钮

        let btngap4 = UIBarButtonItem.init(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)

        progBar = UIProgressView.init(progressViewStyle: UIProgressViewStyle.bar)

        progBar.frame = CGRect.init(x: 0, y: 0, width: 80, height: 20)

        //初始进度

        progBar.progress = 0

        let btnprog5 = UIBarButtonItem.init(customView: progBar)

        browserToolBar.backgroundColor = UIColor.gray

        browserToolBar.setItems([backtn,btngap1,btnforward,btngap2,btnreload,btngap3,btnstop,btngap4,btnprog5], animated: true)

        ptimer = Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: #selector(loadPRogress), userInfo: nil, repeats: true)

        

    }

    func backClicked(_ sender:UIBarButtonItem){

       webview.goBack()

    }

    //前进

    func forwardClicked(_ sender:UIBarButtonItem) {

     webview.goForward()

    }

    //刷新

    func reloadClick(_ sender:UIBarButtonItem){

        webview.reload()

    }

    //加载停止

    func stopClick(_ sender:UIBarButtonItem){

        webview.stopLoading()

    }

    

    func loadPRogress(){

        if progBar.progress >= 1.0 {

            ptimer.invalidate()

        }else{

            progBar.setProgress(progBar.progress + 0.02, animated: true)

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息