//
// ViewController.swift
// Web
//
// Created by Hamlit Jason on 2021/02/21.
//
import UIKit
import WebKit
class ViewController: UIViewController, WKNavigationDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
myWebView.navigationDelegate = self // 웹뷰가 로딩중인지 살펴보기 위한 델리게이션
loadWebPage("https://2sam.net")
}
func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
// 로딩중인지 확인
myActivityIndicator.startAnimating()
myActivityIndicator.isHidden = false
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
// 로딩이 완료되었을 때 동작
myActivityIndicator.stopAnimating()
myActivityIndicator.isHidden = true
}
func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
// 로딩 실패시
myActivityIndicator.stopAnimating()
myActivityIndicator.isHidden = true
}
func loadWebPage(_ url : String){
let myUrl = URL(string: url)
let myRequest = URLRequest(url: myUrl!)
myWebView.load(myRequest)
}
@IBOutlet var txtUrl: UITextField!
@IBOutlet var myWebView: WKWebView!
@IBOutlet var myActivityIndicator: UIActivityIndicatorView!
func checkUrl (_ url : String) -> String {
var strUrl = url
let flag = strUrl.hasPrefix("http://")
if !flag {
strUrl = "http://" + strUrl
}
return strUrl
}
@IBAction func btnGotoUrl(_ sender: UIButton) {
let myUrl = checkUrl(txtUrl.text!)
txtUrl.text = ""
loadWebPage(myUrl)
}
@IBAction func btnGoSite1(_ sender: UIButton) {
loadWebPage("https://fallinmac.tistory.com")
}
@IBAction func btnGoSite2(_ sender: UIButton) {
loadWebPage("https://blog.2sam.net")
}
@IBAction func btnLoadHtmlString(_ sender: UIButton) {
let htmlString = "<h1> HTML STRING </h1><p> String 변수를 이용한 웹 페이지</p> <p><a href = \"http://2sam.net\">2sam</a>으로 이동</p>"
myWebView.loadHTMLString(htmlString, baseURL: nil)
}
@IBAction func btnLoadHtmlFile(_ sender: UIButton) {
let filepath = Bundle.main.path(forResource: "htmlView", ofType: "html") // htmlView.html 파일에 ㄷ한 패스 변수 생성
let myUrl = URL(fileURLWithPath: filepath!) // 패스 변수를 이용하여 URL 변수를 생성
let myRequest = URLRequest(url: myUrl) // 피퀘스트
myWebView.load(myRequest) // 로드
}
@IBAction func btnStop(_ sender: UIBarButtonItem) {
myWebView.stopLoading()
}
@IBAction func btnReload(_ sender: UIBarButtonItem) {
myWebView.reload()
}
@IBAction func btnGoBack(_ sender: UIBarButtonItem) {
myWebView.goBack()
}
@IBAction func btnGoForward(_ sender: UIBarButtonItem) {
myWebView.goForward()
}
}
웹뷰,,, 골아프다...
웹 뷰의 사용법이 비슷하지만 여러 방법이 있는데, 어려운 것 같다.. 그리고 ATS? 문제인지 error 사파리를 사용하지 않고는 구글 이외의 사이트를 여는 것에 실패했다. Info.plist에서 추가하는 방법도 있다. - 여튼 책보면서 복습 복습 또 복습하기.
웹뷰는 delegate 스토리보드에서 할 필요는 없고 코드로 작성하면 된다.
인디케이터는 가운데에 로딩중.. 이 것을 보여주는 것이다.
주석을 보면서 코드를 이해하도록 하자~!
'Archive > Doit 아이폰 앱(입문)' 카테고리의 다른 글
PageControl - 코드리뷰 (0) | 2021.03.02 |
---|---|
Map - 코드리뷰(맵뷰) (0) | 2021.03.02 |
Alert - 코드리뷰 (0) | 2021.03.02 |
PickerView - 코드리뷰 (0) | 2021.03.02 |
DatePicker - 코드리뷰 (타이머) (0) | 2021.03.02 |