在iOS中,在Xamarin.Forms中浏览同一页面时,多次调用了Custom控件的Draw方法

时间:2019-02-05 18:52:35

标签: ios xamarin xamarin.forms xamarin.ios custom-controls

在我的应用程序中,我在内容页面中添加了自定义控件,并通过单击按钮浏览了该页面。在这种情况下,自定义控件的Draw方法在iOS平台中多次调用(从第二次导航开始)。我添加了重现此问题的代码和简单示例(您可以通过在iOS平台的Draw方法中设置断点来确保)。 请建议我为什么在这种情况下iOS中的draw方法会多次调用,以及如何避免这种情况。

public class CustomView : View
{

}
[assembly: ExportRenderer(typeof(CustomView), typeof(CustomRenderer))]
namespace NavigationTest.iOS
{
public class CustomRenderer : ViewRenderer<CustomView, NativeView>
{
    protected override void OnElementChanged(ElementChangedEventArgs<CustomView> e)
    {
        base.OnElementChanged(e);
        if(e.NewElement != null)
        {
            var nativeView = new NativeView();
            SetNativeControl(nativeView);
        }
    }
    public static new void Init()
    {
        new CustomRenderer();
    }

}
public class NativeView : UITextView
{
    public NativeView() : base()
    {
        this.BackgroundColor = UIColor.Clear;
    }

    public override void Draw(CGRect rect)
    {
        base.Draw(rect);
    }
}


<StackLayout>
    <Button BackgroundColor="AliceBlue" Text="Working Example" Clicked="Button_Clicked" Margin="20" />
    <local:CustomView />
</StackLayout>
private void Button_Clicked(object sender, EventArgs e)
    {
        Navigation.PushAsync(new MainPage());
    }

请找到完整的示例here

0 个答案:

没有答案