1.ios에서 UIWebview를 사용하였다.
하이브리드 앱으로 고객측에 납품이 완료 되었는데 swipe로 뒤로가기 앞으로 가기를 원하였다.
찾아보니 UIWebview로는 불가능하고 WKWebview를 사용해서 진행을 해야된다고 한다.
2.그래서 WKWebview로 완료하고 재납품하였다. 처음 사용해본것이기에 정리를 해놓는다.
3.애플 문서를 보니 https://developer.apple.com/reference/webkit/wkwebview 사용법이 나와있다.
// // ViewController.swift // wkwebview // // Created by kangsik choi on 2017. 2. 10.. // Copyright © 2017년 kangsik choi. All rights reserved. // import UIKit import WebKit class ViewController: UIViewController,WKUIDelegate { var webView: WKWebView!
override func loadView() { let webConfiguration = WKWebViewConfiguration() webView = WKWebView(frame: .zero, configuration: webConfiguration) webView.uiDelegate = self view = webView } override func viewDidLoad() { super.viewDidLoad()
let myURL = URL(string: "https://www.apple.com") let myRequest = URLRequest(url: myURL!) webView.load(myRequest) } } |
4.WKWebview도 UIView를 사용했기 때문에 storyboard에서 만들어서 넣어보기로 햇다.
- (instancetype)initWithCoder:(NSCoder *)coder NS_UNAVAILABLE;
- WebKit은 xib에서 지원이 안된다.
소스를 까보면..xib에서 지원이 되기 위해선 다음 초기화 함수가 사용 가능해야 하는데,
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
WKWebView.h를 보면, 사용 불가능하게 막혀 있다!!
- (instancetype)initWithCoder:(NSCoder *)coder NS_UNAVAILABLE;
5.그래서 코드상으로 생성을 해야된다.
위의 코드에서 처럼 view를 wkwebview로 해버리면 status bar가 overlapped 된다.
아래와 같이 statusbar가 내용과 겹쳐서 보기가 싫다.
이럴땐 view에 addsubview를 해줘야된다.
6.statusbar overlapped안되게 하는 코드
// // ViewController.swift // wkwebview // // Created by kangsik choi on 2017. 2. 10.. // Copyright © 2017년 kangsik choi. All rights reserved. // import UIKit import WebKit class ViewController: UIViewController,WKUIDelegate { var webView: WKWebView!
override func viewDidLoad() { super.viewDidLoad()
let webConfiguration = WKWebViewConfiguration() webView = WKWebView(frame: self.view.frame, configuration: webConfiguration) webView.uiDelegate = self self.view.addSubview(webView)
let myURL = URL(string: "https://www.apple.com") let myRequest = URLRequest(url: myURL!) webView.load(myRequest)
}
override func viewWillAppear(_ animated: Bool) { var viewBounds:CGRect = self.view.bounds viewBounds.origin.y = 20; viewBounds.size.height = viewBounds.size.height - 20; self.webView.frame = viewBounds;
} } |
7.view의 . background도 색을 변경해야된다.
8.결과 화면
'아이폰' 카테고리의 다른 글
webview cookie 저장 및 불러오기 (0) | 2017.05.01 |
---|---|
swift로 Data 처리 하는 Extension 모음 (0) | 2017.03.01 |
swift viewWillDisappear (0) | 2016.10.27 |
backbutton 타이틀 없애기 (0) | 2016.10.18 |
테스트플라이트로 올릴때 앱이 사라지는 현상 (0) | 2016.10.07 |