[iOS] 웹 뷰 만들기

!·2022년 8월 13일
0

iOS

목록 보기
9/22

기능

  1. 메인 웹 뷰에 네이버를 메인 홈페이지로 하는 웹 뷰를 띄운다.
  2. site1, site2 버튼을 이용해 정해진 사이트로 이동할 수 있도록 한다.
  3. html 버튼을 통해 html을 웹 뷰에 표시한다.
  4. Fiel 버튼을 이용해 html이 저장되어 있는 파일을 웹 뷰에 표시한다.
  5. 좌측 4개의 버튼으로 웹뷰에 작업을 실시한다.
  6. 웹 뷰 네비게이터를 통해 로딩중일 때, 화면 중앙에 표시한다.
  7. 주소창에 웹페이지 주소를 입력하면, 해당 사이트로 이동한다.

코드

//
//  ViewController.swift
//  Web
//
//  Created by LEE on 2022/08/11.
//

import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {

    @IBOutlet var textUrl: UITextField!
    @IBOutlet var webView: WKWebView!
    @IBOutlet var webIndicator: UIActivityIndicatorView!
    
    func loadWebPage(_ url: String){
        let myUrl = URL(string: url)
        let requestUrl = URLRequest(url: myUrl!)
        webView.load(requestUrl)
        
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        webView.navigationDelegate = self
        loadWebPage("https://www.naver.com")
    }
    func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
        webIndicator.startAnimating()
        webIndicator.isHidden = false
    }
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        webIndicator.stopAnimating()
        webIndicator.isHidden = true
    }
    func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
        webIndicator.stopAnimating()
        webIndicator.isHidden = true
    }
    func checkUrl(_ url: String) -> String
    {
        let strUrl = url
        if strUrl.hasPrefix("http://"){
            return strUrl
        }else{
            return "http://" + strUrl
        }
    }
    @IBAction func touchUpGoButton(_ sender: UIButton) {
        let myUrl = checkUrl(textUrl.text!)
        loadWebPage(myUrl)
        textUrl.text = nil
    }
    @IBAction func touchUpCancelButton(_ sender: UIBarButtonItem) {
        webView.stopLoading()
    }
    @IBAction func touchUpResetButton(_ sender: UIBarButtonItem) {
        webView.reload()
    }
    @IBAction func touchUpRewindButton(_ sender: UIBarButtonItem) {
        webView.goBack()
    }
    @IBAction func touchUpFastButton(_ sender: UIBarButtonItem) {
        webView.goForward()
    }
    @IBAction func touchUpSite1Button(_ sender: UIButton) {
        loadWebPage("https://ssu.ac.kr")
    }
    @IBAction func touchUpSite2Button(_ sender: UIButton) {
        loadWebPage("http://velog.io")
    }
    @IBAction func touchUpHtmlButton(_ sender: UIButton) {
        let htmlString = "<h1> HTML String </h1><p> String 변수를 이용한 웹 페이지 </p><p><a href = \"https://www.naver.com\"> 네이버 </a>로 이동</p>"
        webView.loadHTMLString(htmlString, baseURL: nil)
    }
    
    @IBAction func touchUpFileButton(_ sender: UIButton) {
        let htmlFile = Bundle.main.path(forResource: "htmlView", ofType: "html")
        let myUrl = URL(fileURLWithPath: htmlFile!)
        let myRequest = URLRequest(url: myUrl)
        webView.load(myRequest)
        
    }
}
  • WKNavigationDelegate 를 상속한다.
  • loadWeb 함수를 만들어 주소를 전달받으면 해당 주소로 이동한다.
  • checkUrl 함수를 만들어 주소를 전달받앗을때 http:// 가 앞에 붙어 있는지 안붙어 있는지 검사한다.
profile
개발자 지망생

0개의 댓글