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 |