UIWebView의 scalesPageToFit에 해당하는 WKWebView
나는 대체 할 내 iOS 앱 업데이트하고 UIWebView과를 WKWebView. 그러나 .NET과 동일한 동작을 수행하는 방법을 이해하지 못합니다 WKWebView. 으로 UIWebView내가 사용하는 scalesPageToFit웹 PAG는 화면 크기와 같은 크기로 표시했다 확인하기 위해 (때문에 같은 스크롤없이 전체 화면을 표시합니다).
웹에서 그 솔루션을 찾았지만 작동하지 않습니다.
- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation {
NSString *javascript = @"var meta = document.createElement('meta');meta.setAttribute('name', 'viewport');meta.setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no');document.getElementsByTagName('head')[0].appendChild(meta);";
[webView evaluateJavaScript:javascript completionHandler:nil];
}
WKUserScript를 사용해 볼 수도 있습니다.
내 작업 구성은 다음과 같습니다.
NSString *jScript = @"var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);";
WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:jScript injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];
WKUserContentController *wkUController = [[WKUserContentController alloc] init];
[wkUController addUserScript:wkUScript];
WKWebViewConfiguration *wkWebConfig = [[WKWebViewConfiguration alloc] init];
wkWebConfig.userContentController = wkUController;
wkWebV = [[WKWebView alloc] initWithFrame:self.view.frame configuration:wkWebConfig];
WKWebViewConfiguration에 추가 구성을 추가 할 수 있습니다.
신속한 코드에서 nferocious76의 대답의 에코 : Swift2.x 버전
let jscript = "var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);"
let userScript = WKUserScript(source: jscript, injectionTime: WKUserScriptInjectionTime.AtDocumentEnd, forMainFrameOnly: true)
let wkUController = WKUserContentController()
wkUController.addUserScript(userScript)
let wkWebConfig = WKWebViewConfiguration()
wkWebConfig.userContentController = wkUController
let youWebView = WKWebView(frame: CGRectZero, configuration: wkWebConfig)
swift3 버전
let jscript = "var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);"
let userScript = WKUserScript(source: jscript, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
let wkUController = WKUserContentController()
wkUController.addUserScript(userScript)
let wkWebConfig = WKWebViewConfiguration()
wkWebConfig.userContentController = wkUController
let yourWebView = WKWebView(frame: self.view.bounds, configuration: wkWebConfig)
@ nferocious76과 유사하지만 Swift 언어
var scriptContent = "var meta = document.createElement('meta');"
scriptContent += "meta.name='viewport';"
scriptContent += "meta.content='width=device-width';"
scriptContent += "document.getElementsByTagName('head')[0].appendChild(meta);"
webView.evaluateJavaScript(scriptContent, completionHandler: nil)
Xamarin Custom Renderer에서 사용하기위한 C # 버전 :
string jScript = @"var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);";
WKUserScript wkUScript = new WKUserScript((NSString)jScript, WKUserScriptInjectionTime.AtDocumentEnd, true);
WKUserContentController wkUController = new WKUserContentController();
wkUController.AddUserScript(wkUScript);
WKWebViewConfiguration wkWebConfig = new WKWebViewConfiguration();
wkWebConfig.UserContentController = wkUController;
WKWebView webView=new WKWebView(Frame, wkWebConfig);
나는 영혼 아래에서 알아 냈습니다. 콘텐츠를 장치 크기에 맞게 만듭니다.
func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) { for making the content to fit with the device size
let jscript = "var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);"
webView.evaluateJavaScript(jscript)
}
Adding meta tags or changing java script code did not work for me. Then I changed the frame so it worked well, my web view was aligned and fit the screen after I wrote following code (Swift):
var screenWidth: CGFloat {
return UIScreen.main.bounds.size.width
}
var screenHeight: CGFloat {
return UIScreen.main.bounds.size.height
}
yourWebView = WKWebView(frame: CGRect(x: 0, y: 0, width: screenWidth, height: screenHeight), configuration: WKWebViewConfiguration())
yourWebView.navigationDelegate = self
yourContainerView.addSubview(yourWebView)
참고URL : https://stackoverflow.com/questions/26295277/wkwebview-equivalent-for-uiwebviews-scalespagetofit
'code' 카테고리의 다른 글
| 스크립트를 사용하여 특정 작업 디렉토리가있는 Git Bash 창을 어떻게 시작합니까? (0) | 2020.11.07 |
|---|---|
| 새로 추가하는 방법 (0) | 2020.11.07 |
| C ++에서 참조를 다시 사용할 수없는 이유 (0) | 2020.11.07 |
| 다시 컴파일하지 않고 .NET Windows 서비스 이름을 재정의하는 방법이 있습니까? (0) | 2020.11.07 |
| 네이티브 애니메이션, 완전한 이벤트 반응 (0) | 2020.11.06 |