[2022-08-07 ๐Ÿ‘พ TIL]

Burkeyยท2022๋…„ 8์›” 7์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
5/157

์˜ค๋Š˜์€ ์›น๋ทฐ๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ผ๋‹จ ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ
URL์„ ์ ๋Š” ํ…์ŠคํŠธ ํ•„๋“œ์™€ ๋ฒ„ํŠผ,
์‚ฌ์ดํŠธ๋กœ ์ด๋™ํ•˜๋Š” ์ƒ์œ„ ๋ฒ„ํŠผ 4๊ฐœ,
์›น ๋ทฐ,
๋ฐ” ๋ฒ„ํŠผ4๊ฐœ
๋ฒ„ํŠผ ์‚ฌ์ด์— ๊ณต๊ฐ„์„ ์ฃผ๋Š” Flexible space bar button item 3๊ฐœ๋ฅผ ์ค๋‹ˆ๋‹ค.
(๋ฐ” ๋ฒ„ํŠผ์„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์„ ์–ธํ•  ๋•Œ ๊ณต๊ฐ„์„ ๋”ฐ๋กœ ์ฃผ๋Š” item์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ์‹ ๊ธฐํ•˜์˜€์Šต๋‹ˆ๋‹ค.๐Ÿค”)

import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {
    
    //WKNavigationDelegate๋ฅผ ์ƒ์†์‚ฌ์ผœ์ค˜์„œ WebView์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์•˜๊ฒŒ ๋จ

    @IBOutlet var txtUrl: UITextField!
    @IBOutlet var myWebView: WKWebView!
    @IBOutlet var myActivityIndicator: UIActivityIndicatorView!
    //textField์™€ WebView,Indicator์˜ ์•„์šธ๋ › ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ
    
    func loadWebPage(_ url: String){
        let myUrl = URL(string: url)
        let myRequest = URLRequest(url: myUrl!)
        myWebView.load(myRequest)
    }
    //WebView๋ฅผ ๋ถˆ๋กœ์˜ค๋Š” ํ•จ์ˆ˜ ์ธ์ˆ˜๋กœ ์ฃผ์–ด์ง„ Url์— request๋ฅผ ๋ณด๋‚ด์„œ Webview์— ๋ถˆ๋Ÿฌ์˜จ๋‹ค.
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        myWebView.navigationDelegate = self
        loadWebPage("http://2sam.net")
    }
    //์•ฑ์ด ์‹คํ–‰๋  ๋•Œ ๋ถˆ๋Ÿฌ์˜ฌ ์›น์˜ Url๋กœ webView๋ฅผ ์„ค์ •ํ•œ๋‹ค.
    
    func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
        myActivityIndicator.startAnimating()
        myActivityIndicator.isHidden = false
    }
    //์›น๋ทฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋™์•ˆ Indicator๊ฐ€ ์‹คํ–‰
    
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        myActivityIndicator.startAnimating()
        myActivityIndicator.isHidden = true

    }
    //์›น๋ทฐ๊ฐ€ ๋กœ๋”ฉ์ด ๋๋‚˜๊ณ  Indicator๊ฐ€ ์ค‘์ง€

    func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
        myActivityIndicator.startAnimating()
        myActivityIndicator.isHidden = true
    }
    //์›น๋ทฐ๊ฐ€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒˆํ•˜๊ณ  Indicator๊ฐ€ ์ค‘์ง€

    func checkUrl(_ url: String) -> String {
        var strUrl = url
        let flag = strUrl.hasPrefix("http://")
        if !flag {
            strUrl = "http://" + strUrl
        }
        return strUrl
    }
    //textFile์— http://๊ฐ€ ์•ž์— ๋ถ™์–ด์žˆ์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ ๋ถ™์—ฌ์ค€๋‹ค.

    @IBAction func btnGotoUrl(_ sender: UIButton) {
        let myUrl = checkUrl(txtUrl.text!)
        txtUrl.text = ""
        loadWebPage(myUrl)
    }
    //Go ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ•ด๋‹น url๋กœ WebView๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.
    
    @IBAction func btnGotoSite1(_ sender: UIButton) {
        loadWebPage("http://fallinmac.tistory.com")
    }
    //site1 ๋ฒ„ํŠผ ๋ˆ„๋ฅผ ์‹œ ์ด๋™ํ•  ์‚ฌ์ดํŠธ ์„ค์ •
    
    @IBAction func btnGotoSite2(_ sender: UIButton) {
        loadWebPage("http://blog.2sam.net")
    }
    //site2 ๋ฒ„ํŠผ ๋ˆ„๋ฅผ ์‹œ ์ด๋™ํ•  ์‚ฌ์ดํŠธ ์„ค์ •
    
    @IBAction func btnLoadHtmlString(_ sender: UIButton) {
        let html = "<h1> HTML String</h1><p> String ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•œ ์›น ํŽ˜์ด์ง€</p><p><a href=\"http://2sam.net\">2sam</a></p>"
        
        myWebView.loadHTMLString(html, baseURL: nil)
    }
    //๋ฌธ์ž์—ด์— ์ €์žฅ๋œ html์œผ๋กœ webView๋ฅผ ๋กœ๋“œํ•œ๋‹ค.
    
    @IBAction func btnLoadHtmlFile(_ sender: UIButton) {
        let filePath = Bundle.main.path(forResource: "htmlView", ofType: "html")
        let myUrl = URL(fileURLWithPath: filePath!)
        let myRequest =  URLRequest(url: myUrl)
        
        myWebView.load(myRequest)
    }
    //file์— ์ €์žฅ๋œ html์„ ๋ถˆ๋Ÿฌ์™€ ํ™”๋ฉด์— ๋กœ๋“œํ•œ๋‹ค.
    
    @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()
    }
}

ViewController.swift ํŒŒ์ผ์—์„œ WebView๋ฅผ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”

import WebKit

WebKit ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์™€์„œ ViewControllerํด๋ž˜์Šค์— WKNavigationDelegate๋ฅผ ์ƒ์†์‹œ์ผœ ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

profile
์Šคํƒฏ ์˜ฌ๋ฆฌ๋Š” ์ค‘

0๊ฐœ์˜ ๋Œ“๊ธ€