using Foundation;
|
using System;
|
using WebKit;
|
|
namespace Shared
|
{
|
/// <summary>
|
/// MyEchartsViewOn HDLON+
|
/// </summary>
|
public class MyEchartsViewOn : View
|
{
|
//EchartRootJson jsonData = new EchartRootJson() { };
|
|
/// <summary>
|
/// option的配置json
|
/// </summary>
|
string optionJsonString;
|
|
/// <summary>
|
/// WKWebView控件
|
/// </summary>
|
WKWebView uIWebView;
|
|
/// <summary>
|
///
|
/// </summary>
|
public MyEchartsViewOn()
|
{
|
//jsonData = new EchartRootJson();
|
//默认布局,宽高为0的话会异常
|
var mFrame = new CoreGraphics.CGRect(base.X, base.Y, 10, 10);
|
uIWebView = new WKWebView(mFrame, new WKWebViewConfiguration()) { };
|
uiView = uIWebView;
|
uIWebView.ScrollView.Bounces = false;
|
uIWebView.ScrollView.ScrollEnabled = false;
|
uIWebView.NavigationDelegate = new OnWKNavigationDelegate(this);
|
//var filePath = NSBundle.MainBundle.PathForResource("echarts", "html");
|
var filePath = NSBundle.MainBundle.PathForResource("echartsNew", "html");
|
|
var url = new NSUrl(filePath, false);
|
uIWebView.LoadFileUrl(url, url);
|
}
|
|
/// <summary>
|
/// 加载本地HTML
|
/// </summary>
|
public void LoadFileUrl()
|
{
|
var filePath = NSBundle.MainBundle.PathForResource(htmlPathName, "html");
|
var url = new NSUrl(filePath, false);
|
uIWebView.LoadFileUrl(url, url);
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
string htmlPathName = "echarts";
|
public string HtmlPathName
|
{
|
get
|
{
|
return htmlPathName;
|
}
|
set
|
{
|
htmlPathName = value;
|
LoadFileUrl();
|
}
|
}
|
|
/// <summary>
|
/// 是否采用LoadEchartsNew的方式
|
/// </summary>
|
bool IsLoadEchartsNew = false;
|
/// <summary>
|
/// 加载Option配置参数
|
/// 刷新图表
|
/// </summary>
|
/// <param name="option"></param>
|
public void ShowWithOption(string option)
|
{
|
IsLoadEchartsNew = true;
|
optionJsonString = option;
|
EvaluateJavascript();
|
}
|
|
/// <summary>
|
/// 加载Option配置jsonString
|
/// </summary>
|
/// <param name="jsonString"></param>
|
public void ShowWithOptionJsonString(string jsonString)
|
{
|
IsLoadEchartsNew = false;
|
optionJsonString = jsonString;
|
EvaluateJavascript();
|
}
|
|
/// <summary>
|
/// EvaluateJavascript
|
/// </summary>
|
public void EvaluateJavascript()
|
{
|
WKJavascriptEvaluationResult handler = (NSObject result, NSError err) =>
|
{
|
if (err != null)
|
{
|
HDLUtils.WriteLine("EvaluateJavascript:" + err);
|
}
|
if (result != null)
|
{
|
HDLUtils.WriteLine("EvaluateJavascript:" + result);
|
}
|
};
|
//是否调用loadEchartsNew
|
if (IsLoadEchartsNew)
|
{
|
uIWebView.EvaluateJavaScript($"loadEchartsNew({optionJsonString})", handler);
|
}
|
else
|
{
|
uIWebView.EvaluateJavaScript($"loadEcharts({optionJsonString})", handler);
|
}
|
}
|
|
/// <summary>
|
/// OnWKNavigationDelegate
|
/// </summary>
|
public class OnWKNavigationDelegate : WKNavigationDelegate
|
{
|
[Weak] MyEchartsViewOn _MyEchartsViewOn;
|
|
public OnWKNavigationDelegate(MyEchartsViewOn view)
|
{
|
_MyEchartsViewOn = view;
|
}
|
|
public override void DidFinishNavigation(WKWebView webView, WKNavigation navigation)
|
{
|
Console.WriteLine("WKWebView DidFinishNavigation");
|
_MyEchartsViewOn.EvaluateJavascript();
|
}
|
}
|
|
}
|
|
}
|