Я сделал приложение 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