728x90
반응형
//
// 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 이면 // Indicator
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")
}
// URL 주소창
@IBAction func btnGotoUrl(_ sender: UIButton) {
// URL 주소 입력 후 go 클릭시 작동
let myUrl = checkUrl(txtUrl.text!)
txtUrl.text = ""
loadWebPage(url: myUrl)
}
// Site 1
@IBAction func btnGoSite1(_ sender: UIButton) {
loadWebPage(url: "https://google.com")
}
// Site 2
@IBAction func btnGoSite2(_ sender: UIButton) {
loadWebPage(url: "https://daum.net")
}
// HTML
@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)
// 이미지 같은게 있으면 이렇게 쓸 수 있다.
}
// FILE
@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) > Swfit' 카테고리의 다른 글
IOS ) SwipeGuesture(스와이프 제스쳐) (0) | 2020.08.27 |
---|---|
IOS) GPS 위치 (사진필요) (0) | 2020.08.27 |
IOS ) WKWebView를 통해 JSP 연결 (아파치 톰캣 필요)(사진필요) (0) | 2020.08.26 |
IOS) PageControl + label (홀수 :빨간색 , 짝수 : 파란색) (0) | 2020.08.26 |
IOS) 경고 알림창 띄우기 기능 + 한 번에 3개의 기능 구현하기 (0) | 2020.08.26 |