swift浏览器

来源:互联网 发布:淘宝专业版模板代码 编辑:程序博客网 时间:2024/06/16 09:51

 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)
        }
    }
}


0 0
原创粉丝点击