Skip to content

Instantly share code, notes, and snippets.

@g001613001
Created January 5, 2017 03:24
Show Gist options
  • Save g001613001/74cc1e48dd204bc06e3b143a32f3936f to your computer and use it in GitHub Desktop.
Save g001613001/74cc1e48dd204bc06e3b143a32f3936f to your computer and use it in GitHub Desktop.
import UIKit
import WebKit
class WebVController: UIViewController {
@IBOutlet weak var viewForWeb: UIView!
@IBOutlet weak var activityIndicatorView: UIActivityIndicatorView!
fileprivate var webView:WKWebView?
fileprivate var btnBack = UIBarButtonItem()
var urlString:String? = nil
override func viewDidLoad() {
super.viewDidLoad()
setWKWebView()
}
deinit {
urlString = nil
webView = nil
// print("WebVC deinit.")
}
fileprivate func setWKWebView(){
if (urlString ?? "") != "" {
if let _webUrl = urlString {
webView = WKWebView(frame: self.viewForWeb.bounds)
guard let webView = webView else { return }
setWKWebviewConstraints()
webView.navigationDelegate = self
let url = URL (string: _webUrl)
let request = URLRequest(url: url!)
_ = webView.load(request)
webView.scrollView.bounces = false//防止在頂端時往下拉的空白出現
// webView?.autoresizingMask = [UIViewAutoresizing.flexibleWidth, UIViewAutoresizing.flexibleHeight]
}
} else {
activityIndicatorView.isHidden = true
view.addToBeSuppliedView()
}
}
//MARK:- set webView constraints
fileprivate func setWKWebviewConstraints(){
guard let webView = webView else { return }
webView.translatesAutoresizingMaskIntoConstraints = false
let height = NSLayoutConstraint(item: webView, attribute: .height, relatedBy: .equal, toItem: viewForWeb, attribute: .height, multiplier: 1, constant: 0)
let width = NSLayoutConstraint(item: webView, attribute: .width, relatedBy: .equal, toItem: viewForWeb, attribute: .width, multiplier: 1, constant: 0)
viewForWeb.addConstraints([height, width])
}
//MARK:- check webView can not go back
fileprivate func checkCanBack() {
guard let webView = webView else { return }
navigationItem.leftBarButtonItem?.isEnabled = webView.canGoBack
setNavBar()
}
//MARK:- set navi bar left button
fileprivate func setNavBar(){
guard let webView = webView else { return }
if webView.canGoBack {
let back = UIBarButtonItem(image: UIImage(named: "icon-goleft"), style: .plain, target: self, action: #selector(backAction))
navigationItem.leftBarButtonItem = back
}else{
navigationItem.setLeftBarButton(nil, animated: true)
}
}
//MARK:- webView go back func
@objc fileprivate func backAction() {
guard let webView = webView else { return }
if webView.canGoBack {
webView.goBack()
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment