개발자 코드(Code)/Swfit

IOS) 웹사이트 연결

Chain X 2020. 8. 26. 18:53
728x90
반응형

01

 

//
//  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()
    }
    

} // ----------------

반응형