在Xamarin.IOS C#中强制Draw()

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Xamarin.IOS C#中强制Draw()相关的知识,希望对你有一定的参考价值。

我正在研究Xamarin.ios项目,我希望在TouchBegan和UIView的TouchEnd上更新屏幕(通过调用覆盖Draw()方法)。

public override void TouchesBegan(NSSet touches, UIEvent evt)
{
    base.TouchesBegan(touches, evt);

    SetNeedsDisplay();
}

public override void TouchesEnded(NSSet touches, UIEvent evt)
{
    base.TouchesEnded(touches, evt);

    SetNeedsDisplay();
}

public override void Draw(CGRect rect)
{
    //draw in CGContext
}

仅在我点击时第一次从TouchBegan调用Draw()方法。之后,在TouchEnd完成之前,不会调用Draw。

有没有办法在我的TouchBegan上强制Draw(在TouchEnd被触发之前)。与android中的Invalidate()类似的东西。

这是因为,我在TouchBegan和TouchEnd中绘制了不同的上下文。因此,我希望在每次触摸事件后确定调用Draw方法。

任何帮助表示赞赏。谢谢。

答案

TouchesBegan只是在一个或多个手指触摸屏幕时触发。如果你想在触摸屏幕并移动手指时调用Draw方法,请添加方法TouchesMoved

public override void TouchesMoved(NSSet touches, UIEvent evt)
{
    base.TouchesMoved(touches, evt);
    SetNeedsDisplay();
}

然后当你的手指离开UIView时,你可以在TouchesEnded结束你的绘画。

以上是关于在Xamarin.IOS C#中强制Draw()的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xamarin.iOS 中正确包装本机 c 库

xamarin ios 应用程序因 CBCentralManager 崩溃

Xamarin iOS 链接器问题

C# Xamarin IOS:相当于 C# IOS Xamarin 中的 SystemClock.ElapsedRealtime()

C#Xamarin iOS RegisteredForRemoteNotifications从未触发过

C# Monotouch/Xamarin.iOS - 可滚动的 UIView