728x90
반응형
0
//
// ViewController.swift
// Hybrid
//
// Created by Leo_Jang on 26/08/2020.
// Copyright © 2020 Leo_Jang. All rights reserved.
//
import UIKit
import WebKit // ****** 반드시 먼저 import WebKit 을 시켜준다.
class ViewController: UIViewController {
@IBOutlet weak var txtUrl: UITextField!
@IBOutlet weak var myWebView: WKWebView!
@IBOutlet weak var myActivityIndicator: UIActivityIndicatorView!
// 웹페이지 불러주는 함수 // 함수 위치는 상관없다.
func loadWebPage(url: String){
let myUrl = URL(string: url) // 스트링이 URL 타입으로 바뀐다.
let myRequest = URLRequest(url: myUrl!) // myRequest에서 URLRequest값을 가져온다.
myWebView.load(myRequest) // 가져올 URL타입을 적어라 -> .load(myRequest)
//Web View가 Loading중 인지 확인
myWebView.addObserver(self, forKeyPath: #keyPath(WKWebView.isLoading), options: .new, context: nil)
//WKWebView 값이 밑에 애를 불러온다.
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == "loading" { //loading 이면
myActivityIndicator.stopAnimating()
myActivityIndicator.isHidden = false
}else{
myActivityIndicator.startAnimating()
myActivityIndicator.isHidden = true
}
}
// 사용자가 "http://"를 적지 않고 그냥 검색 할 때
func checkUrl(_ url: String) -> String{
var strUrl = url
let flag = strUrl.hasPrefix("http://") //"http://"이게 없으면 True 없으면 false
if !flag {
strUrl = "http://" + strUrl
}
return strUrl
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
//초기화면 설정 (네이버)
loadWebPage(url: "https://www.naver.com")
}
@IBAction func btnGotoUrl(_ sender: UIButton) {
// URL 주소 입력 후 go 클릭시 작동
let myUrl = checkUrl(txtUrl.text!)
txtUrl.text = ""
loadWebPage(url: myUrl)
}
@IBAction func btnGoSite1(_ sender: UIButton) {
loadWebPage(url: "https://google.com")
}
@IBAction func btnGoSite2(_ sender: UIButton) {
loadWebPage(url: "https://daum.net")
}
@IBAction func btnLoadHtmlString(_ sender: UIButton) {
// String 타입을 불러온다.
//<meta charset = "utf-8">
//<meta name="viewport" content="width = device-width,
//initial-scale=1.3">
let htmlString = """
<html>
<head>
<meta charset = "utf-8">
<meta name="viewport" content="width = device-width,
initial-scale=1.3">
</head>
<body>
<h1> HTML String </h1>
<p>String 변수를 이용한 웹페이지 </p>
<p><a href = \"http://jtbc.joins.com\">JTBC</a>로
이동</p>
</body>
</html
"""
myWebView.loadHTMLString(htmlString, baseURL: nil)
// 이미지 같은게 있으면 이렇게 쓸 수 있다.
}
@IBAction func btnLoadHtmlFile(_ sender: UIButton) {
// Html file형태로 불러온다.
// 이미지, 동영상 등 불러오기 가능
let filePath = Bundle.main.path(forResource: "htmlView", ofType: "html")
let myUrl = URL(fileURLWithPath: filePath!) // fileURLWidthPath를 URL 타입으로 바꾼다.
let myRequest = URLRequest(url: myUrl) // myRequest에서 URLRequest값을 가져온다.
myWebView.load(myRequest) // 가져올 URL타입을 적어라 -> .load(myRequest)
}
@IBAction func btnStrop(_ 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()
}
} // ----------------
반응형
'개발자 코드(Code) > Swift(예제 및 문제)' 카테고리의 다른 글
IOS) 홀수 / 짝수 판별 (TextField, Button, Label) (0) | 2020.09.24 |
---|---|
IOS) 버튼 클릭시 텍스트 번갈아보기 (0) | 2020.09.24 |