自定义渲染器在 iOS + 库中不起作用
Custom renderer doesn't work in iOS + library
我不知道为什么我的 Xamarin.Forms 自定义渲染器在我将它放入库中并且仅在 iOS 上时不起作用,有人可以帮助我吗?
[assembly: ExportRenderer(typeof(HtmlLabel), typeof(HtmlLabelRenderer))]
namespace Plugin.HtmlLabel.iOS
{
public class HtmlLabelRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
if (Control == null) return;
UpdateMaxLines();
UpdateText();
}
如果进入项目,它在 Android、UWP 和 iOS 上运行良好。
添加一个什么都不做的Initialize
静态方法到你的HtmlLabelRenderer
class以确保你的渲染器类型被加载beforeForms
示例:
public static void Initialize()
{
}
用法:
在你的AppDelegate
之前Forms.Init()
,调用你的Initialize方法:
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
Plugin.HtmlLabel.iOS.HtmlLabelRenderer.Initialize();
global::Xamarin.Forms.Forms.Init();
LoadApplication(new App());
return base.FinishedLaunching(app, options);
}
我不知道为什么我的 Xamarin.Forms 自定义渲染器在我将它放入库中并且仅在 iOS 上时不起作用,有人可以帮助我吗?
[assembly: ExportRenderer(typeof(HtmlLabel), typeof(HtmlLabelRenderer))]
namespace Plugin.HtmlLabel.iOS
{
public class HtmlLabelRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
if (Control == null) return;
UpdateMaxLines();
UpdateText();
}
如果进入项目,它在 Android、UWP 和 iOS 上运行良好。
添加一个什么都不做的Initialize
静态方法到你的HtmlLabelRenderer
class以确保你的渲染器类型被加载beforeForms
示例:
public static void Initialize()
{
}
用法:
在你的AppDelegate
之前Forms.Init()
,调用你的Initialize方法:
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
Plugin.HtmlLabel.iOS.HtmlLabelRenderer.Initialize();
global::Xamarin.Forms.Forms.Init();
LoadApplication(new App());
return base.FinishedLaunching(app, options);
}