首页 > 解决方案 > 用什么方法告诉画布使用 Skiasharp.Views.iOS 重绘自己?

问题描述

技术:Xamarin.Forms、Xamarin.iOS 和 C#

问题:我正在尝试使用 Skiasharp.Views.Forms 到 Skiasharp.Views.iOS 找到等效的 SKCanvasView.InvalidateSurface()。似乎没有等价物。在我的代码片段中的注释下方是我试图在 Skiasharp.Views.iOS 中找到等效方法的方法。

 using System;
 using System.Diagnostics;
 using Xamarin.Forms;
 using SkiaSharp;
 using SkiaSharp.Views.Forms;

 namespace SkiaSharpFormsDemos.Basics
 {
   public class ExpandingCirclesPage : ContentPage
   {
     protected override void OnAppearing()
     {
        base.OnAppearing();
        pageIsActive = true;
        stopwatch.Start();

        Device.StartTimer(TimeSpan.FromMilliseconds(50), () =>
        {
            t = (float)(stopwatch.Elapsed.TotalMilliseconds % cycleTime / cycleTime);

           /*
            * What's the equivalent of 
            * SKCanvasView.InvalidateSurface() 
            * using Skiasharp.Views.Forms to
            * Skiasharp.Views.iOS.
            */
            canvasView.InvalidateSurface(); 

            if (!pageIsActive)
            {
                stopwatch.Stop();
            }
            return pageIsActive;
        });
 }
}

标签: skiasharp

解决方案


在实例上使用 iOS 本机UIView.SetNeedsDisplay方法。SKCanvasView这应该引发PaintSurface事件并重绘视图。


推荐阅读