기능
- 메인 웹 뷰에 네이버를 메인 홈페이지로 하는 웹 뷰를 띄운다.
- site1, site2 버튼을 이용해 정해진 사이트로 이동할 수 있도록 한다.
- html 버튼을 통해 html을 웹 뷰에 표시한다.
- Fiel 버튼을 이용해 html이 저장되어 있는 파일을 웹 뷰에 표시한다.
- 좌측 4개의 버튼으로 웹뷰에 작업을 실시한다.
- 웹 뷰 네비게이터를 통해 로딩중일 때, 화면 중앙에 표시한다.
- 주소창에 웹페이지 주소를 입력하면, 해당 사이트로 이동한다.
코드
import UIKit
import WebKit
class ViewController: UIViewController, WKNavigationDelegate {
@IBOutlet var textUrl: UITextField!
@IBOutlet var webView: WKWebView!
@IBOutlet var webIndicator: UIActivityIndicatorView!
func loadWebPage(_ url: String){
let myUrl = URL(string: url)
let requestUrl = URLRequest(url: myUrl!)
webView.load(requestUrl)
}
override func viewDidLoad() {
super.viewDidLoad()
webView.navigationDelegate = self
loadWebPage("https://www.naver.com")
}
func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
webIndicator.startAnimating()
webIndicator.isHidden = false
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
webIndicator.stopAnimating()
webIndicator.isHidden = true
}
func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
webIndicator.stopAnimating()
webIndicator.isHidden = true
}
func checkUrl(_ url: String) -> String
{
let strUrl = url
if strUrl.hasPrefix("http://"){
return strUrl
}else{
return "http://" + strUrl
}
}
@IBAction func touchUpGoButton(_ sender: UIButton) {
let myUrl = checkUrl(textUrl.text!)
loadWebPage(myUrl)
textUrl.text = nil
}
@IBAction func touchUpCancelButton(_ sender: UIBarButtonItem) {
webView.stopLoading()
}
@IBAction func touchUpResetButton(_ sender: UIBarButtonItem) {
webView.reload()
}
@IBAction func touchUpRewindButton(_ sender: UIBarButtonItem) {
webView.goBack()
}
@IBAction func touchUpFastButton(_ sender: UIBarButtonItem) {
webView.goForward()
}
@IBAction func touchUpSite1Button(_ sender: UIButton) {
loadWebPage("https://ssu.ac.kr")
}
@IBAction func touchUpSite2Button(_ sender: UIButton) {
loadWebPage("http://velog.io")
}
@IBAction func touchUpHtmlButton(_ sender: UIButton) {
let htmlString = "<h1> HTML String </h1><p> String 변수를 이용한 웹 페이지 </p><p><a href = \"https://www.naver.com\"> 네이버 </a>로 이동</p>"
webView.loadHTMLString(htmlString, baseURL: nil)
}
@IBAction func touchUpFileButton(_ sender: UIButton) {
let htmlFile = Bundle.main.path(forResource: "htmlView", ofType: "html")
let myUrl = URL(fileURLWithPath: htmlFile!)
let myRequest = URLRequest(url: myUrl)
webView.load(myRequest)
}
}
WKNavigationDelegate
를 상속한다.
loadWeb
함수를 만들어 주소를 전달받으면 해당 주소로 이동한다.
checkUrl
함수를 만들어 주소를 전달받앗을때 http://
가 앞에 붙어 있는지 안붙어 있는지 검사한다.