ios中的WebView以桌面模式打开 [英] WebView in ios open as desktop mode
问题描述
我使用 Xamarin WebView 打开网站,网站采用响应式设计.
在 Android 上,网站会填满页面并正常运行 Android 图片 .>
我在 IOS 中的问题是在桌面上打开而不是在移动模式下打开 IOS 图片一>,
经过更多搜索,我发现 WKWebView 不像 UIWebView 那样使用 ScaleToFitPage我尝试了这段代码,但没有改变任何东西WKWebView 不等同于 UIWebView 的 scalesPageToFit
任何人都可以帮助我解决这个问题,从那一周我一直没有找到解决方案.
[程序集:ExportRenderer(typeof(CustomWebView), typeof(CustomWebViewRenderer))]命名空间 TanfezClient.iOS.Renderers{类 CustomWebViewRenderer : WkWebViewRenderer{protected override void OnElementChanged(VisualElementChangedEventArgs e){base.OnElementChanged(e);//this.ScalesLargeContentImage = true;//this.ShowsLargeContentViewer = true;//this.SizeToFit();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);}}
class CustomWebViewRenderer : WkWebViewRenderer{const string JavaScriptFunction = @"var meta = document.createElement('meta');meta.setAttribute('name', 'viewport');meta.setAttribute('content', 'width=device-width');document.getElementsByTagName('head')[0].appendChild(meta);";WKUserContentController userController;公共 CustomWebViewRenderer() : this(new WKWebViewConfiguration()){}公共 CustomWebViewRenderer(WKWebViewConfiguration config) : base(config){userController = config.UserContentController;var script = new WKUserScript(new NSString(JavaScriptFunction), WKUserScriptInjectionTime.AtDocumentEnd, false);userController.AddUserScript(script);config.UserContentController = 用户控制器;WKWebView webView = new WKWebView(Frame, config);}}
我终于找到了解决方案,非常感谢@Junior Jiang - MSFT 为了帮助我,我用我之前编写的代码再次尝试了你的想法,并且工作得很好,非常感谢.
I use Xamarin WebView to open a site, site is using responsive design.
On Android the site fills the page and work correctly Android Picture .
My Problem in IOS it appears as it open in desktop not in mobile mode IOS Picture,
after more searched i found WKWebView not use ScaleToFitPage Like UIWebView I try this code but not change anything WKWebView didn't equivalent for UIWebView's scalesPageToFit
can anyone help me about that i stuck in that problem from week i didn't find solution till now.
[assembly: ExportRenderer(typeof(CustomWebView), typeof(CustomWebViewRenderer))]
namespace TanfezClient.iOS.Renderers
{
class CustomWebViewRenderer : WkWebViewRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
//this.ScalesLargeContentImage = true;
//this.ShowsLargeContentViewer = true;
//this.SizeToFit();
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);
}
}
class CustomWebViewRenderer : WkWebViewRenderer
{
const string JavaScriptFunction = @"var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);";
WKUserContentController userController;
public CustomWebViewRenderer() : this(new WKWebViewConfiguration())
{
}
public CustomWebViewRenderer(WKWebViewConfiguration config) : base(config)
{
userController = config.UserContentController;
var script = new WKUserScript(new NSString(JavaScriptFunction), WKUserScriptInjectionTime.AtDocumentEnd, false);
userController.AddUserScript(script);
config.UserContentController = userController;
WKWebView webView = new WKWebView(Frame, config);
}
}
Finally i find Solution, thanks very much @Junior Jiang - MSFT For helping me i try again your idea with code i write before and work well thanks alot.
这篇关于ios中的WebView以桌面模式打开的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!