C# SkiaSharep Xamarin:InvalidateSurface()可以在android上工作,但不能在ios设备上工作

C# SkiaSharep Xamarin:InvalidateSurface()可以在android上工作,但不能在ios设备上工作,c#,ios,xamarin,C#,Ios,Xamarin,我制作了一个Xamarin应用程序,其中包括一个由SkiaSharp SKCanvas绘制的图形。现在我有以下问题: 根据文档和教程,需要调用InvalidateSurface(),然后调用可以覆盖的OnPaintSurface()。这个调用在模拟器和android设备上运行良好。但一旦我将应用程序部署到我的iPhone(iOs 13.3)上,OnPaintSurface()就永远不会被调用InvalidateSurface()由依赖项属性的更改调用 有人对这种奇怪的行为有什么建议或经验吗 代码

我制作了一个Xamarin应用程序,其中包括一个由SkiaSharp SKCanvas绘制的图形。现在我有以下问题:

根据文档和教程,需要调用
InvalidateSurface()
,然后调用可以覆盖的
OnPaintSurface()
。这个调用在模拟器和android设备上运行良好。但一旦我将应用程序部署到我的iPhone(iOs 13.3)上,
OnPaintSurface()
就永远不会被调用<代码>InvalidateSurface()由依赖项属性的更改调用

有人对这种奇怪的行为有什么建议或经验吗

代码段:

 public class CoordAxesControl : SKCanvasView
{
    private float _absoluteMinXOfCoord;
    private float _absoluteMaxXOfCoord;
    private float _absoluteMinYOfCoord;
    private float _absoluteMaxYOfCoord;
    private SKPaint _blackPaint;


    #region DependencyProperties

    public static readonly BindableProperty PointCoordinatesProperty = 
                BindableProperty.Create(propertyName: nameof(PointCoordinates),
                    returnType: typeof(IEnumerable<Tuple<int,int>>),
                    defaultValue: new List<Tuple<int,int>>(),
                    declaringType: typeof(CoordAxesControl),
                    propertyChanged: DependencyPropertiesChanged);

    public IEnumerable<Tuple<int,int>> PointCoordinates
    {
        get { return _pointCoordinates; }
        set { _pointCoordinates = value; }
    }
    private IEnumerable<Tuple<int, int>> _pointCoordinates;

    #endregion

    #region methods
    private static void DependencyPropertiesChanged(BindableObject bindable, object oldValue, object newValue)
    {
        var control = (CoordAxesControl)bindable;

        if (oldValue != newValue)
        {
            control.PointCoordinates = (List<Tuple<int, int>>)newValue;
            control.InvalidateSurface();
        }
    }


    /// <summary>
    /// Called method when canvas is drawn
    /// </summary>
    /// <param name="e"></param>
    protected override void OnPaintSurface(SKPaintSurfaceEventArgs e)
    {
        if (PointCoordinates == null)
            return;

        var canvas = e.Surface.Canvas;
        canvas.Clear();

        _blackPaint = new SKPaint();
        _blackPaint.Color = SKColors.Black;
        _blackPaint.StrokeWidth = 5;
        //drawing canvas is placed here. Omitted due to clarity 
公共类协同控制:SKCanvasView
{
私人浮动(绝对最低限额);;
私人浮动(绝对最大浮动);;
私人浮动(绝对最低限额);;
私人浮动(绝对最大浮动);;
私人油漆(黑色油漆),;
#区域依赖性房地产
公共静态只读BindableProperty PointCoordinateProperty=
创建(propertyName:nameof(PointCoordinates),
returnType:typeof(IEnumerable),
defaultValue:新建列表(),
declaringType:typeof(CoordAxesControl),
属性更改:从属属性更改);
公共IEnumerable点坐标
{
获取{return\u pointCoordinates;}
设置{u pointCoordinates=value;}
}
私有IEnumerable_点坐标;
#端区
#区域方法
私有静态void dependencProperties已更改(BindableObject bindable、object oldValue、object newValue)
{
var控制=(CoordAxesControl)可绑定;
如果(旧值!=新值)
{
control.PointCoordinates=(列表)newValue;
控件。使曲面无效();
}
}
/// 
///绘制画布时调用方法
/// 
/// 
漆面上受保护的覆盖无效(SKPAINTSURFACHEVENTARGS e)
{
如果(点坐标==null)
返回;
var canvas=e.Surface.canvas;
canvas.Clear();
_blackPaint=新SKPaint();
_blackPaint.Color=SKColors.Black;
_blackPaint.StrokeWidth=5;
//绘图画布放在这里。由于清晰,省略了

不要描述代码,而是向我们展示相关的portions@Jason我已经添加了相关的代码snippet@CJThiele您好,您是否尝试过使用其他具有不同软件版本的iPhone设备进行测试?以及在物理设备中运行时是否出现错误日志。@JuniorJiang MSFT我使用iPhone SE进行了尝试,但不幸的是,它是我的iPhone 8上安装了相同的iOs版本,所以它也不起作用。现在我在华为Mate 10上试用了它,在Android上也没有问题……所以这必须是iOs特有的problem@CJThiele您好,谢谢分享。不过,它在我的本地网站上工作,无论是在模拟器还是物理设备上。我想您可以分享未发布的屏幕截图在这里检查。