지난 포스팅에
IOS 환경에서 웹뷰를 구현했는 데 문제는 웹뷰에 연결하는 시간이 오래 걸려
사용자가 텅 빈 화면을 볼 수 있다는 게 문제였다.
때문에 지난 포스팅에 이어 프로그레스바 옵션을 추가하겠다.
import WebKit
import UIKit
class ViewController: UIViewController, WKUIDelegate,WKNavigationDelegate {
var webView : WKWebView!
var progressView: UIProgressView!
override func viewDidLoad() {
super.viewDidLoad()
let site = "http://도메인주소.kr"
let url = URL(string: site)
let request = URLRequest(url: url!)
webView = WKWebView(frame: self.view.frame)
webView.navigationDelegate = self
webView.uiDelegate = self
webView.load(request)
self.view.addSubview(webView)
// 여기서부터 프로그레스바
progressView = UIProgressView(progressViewStyle: .default)
progressView.sizeToFit()
progressView.frame = CGRect(x: 0, y: 64, width: self.view.bounds.size.width, height: 20)
self.view.addSubview(progressView)
self.webView.addObserver(self, forKeyPath: #keyPath(WKWebView.estimatedProgress), options: .new, context: nil)
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == "estimatedProgress" {
progressView.progress = Float(webView.estimatedProgress)
print(Float(webView.estimatedProgress))
if Float(webView.estimatedProgress) == 1.0 { // 로딩이 다되면
progressView.progress = 0 // 0 으로 초기화
}
}
}
}
스타일 관련해서 디테일 한 부분은 공식문서 참고해주시고,
프로그레스바가 100프로 만족되면 0으로 초기화 시키는 로직을 추가하였다.
끝!
'모바일 > Swift' 카테고리의 다른 글
[IOS] Xcode에서 터미널 열기 (0) | 2025.03.20 |
---|---|
[IOS] Failed to register bundle identifier 에러 해결 (0) | 2025.02.14 |
[IOS] WK WebView 를 구현해보자 (0) | 2025.02.14 |
[IOS] Xcode Missing iOS Distribution signing identity 에러처리 (0) | 2025.02.14 |