ios中的WebView以桌面模式打开 [英] WebView in ios open as desktop mode

查看:66
本文介绍了ios中的WebView以桌面模式打开的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆