본문 바로가기
Application/Swift

22.03.30 Web-view

by 가나닩 2022. 3. 31.

7장

 

Web-View : 웹 컨텐츠를 뷰(View)형태로 보여 주는 앱, HTML로 작성된 홈페이지를 표시할 수 있다.

- 아웃렛 변수 : 텍스트 필드(주소 입력), 웹 뷰, 

- 액션 함수 : 버튼(주소창 검색버튼, Site1, Site2, HTML, File), 툴바(툴바, Bar Button Item, Flexible space Bar Button Item)

 

Site1에 저장된 네이버 주소, 네이버 화면을 WebView로 표시
HTML 버튼에 저장된 내용 표시, daum 링크 버튼을 눌러 daum 웹페이지를 WebView에 표시

 

 

※ import WebKit

- import 명령어를 통해 WebKit 모듈을 가져옴

 

※ 툴바와 버튼

- 툴바 : 툴바 기능을 할 버튼들이 놓일 공간을 지정

- Bar Button Item : Flexible과 함께 툴바에 놓여 일정 공간을 버튼으로 할당

- Flexible space Bar Button Item : Bar Button Item의 사이와 바깥에 놓아 일정 간격을 유지해 주는 역할

 

 

 

 

▷ 전체 코드 

더보기
//
//  ViewController.swift
//  Web
//
//  Created by 박성수 on 2022/03/30.
//

import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {

    @IBOutlet var txtUrl: UITextField!
    @IBOutlet var myWebView: WKWebView!
    @IBOutlet var myActivityIndicator: UIActivityIndicatorView!
    
    func loadWebPage(_ url: String){
        let myUrl = URL(string: url)
        let myRequest = URLRequest(url: myUrl!)
        myWebView.load(myRequest)
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        myWebView.navigationDelegate = self
        loadWebPage("http://www.naver.com/")
    }
    
    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 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://github.com")
    }
    @IBAction func btnGoSite2(_ sender: UIButton) {
        loadWebPage("https://stackoverflow.com")
    }
    @IBAction func btnLoadHtmlString(_ sender: UIButton) {
        let htmlString = "<h1> HTML String </h1><p> String 변수를 이용한 웹 페이지 </p><p><a href=\"http://www.daum.net\">daum</a>으로 이동</p>"
        myWebView.loadHTMLString(htmlString, baseURL: nil)
    }
    @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)
    }
    @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()
    }
    
}

'Application > Swift' 카테고리의 다른 글

22.04.06 Map-view  (0) 2022.04.08
22.03.29 Alert(얼럿)기능 구현  (0) 2022.03.29
22.03.28 Picker-View 구현 및 Delegate  (0) 2022.03.29