无法覆盖UIView.Draw方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法覆盖UIView.Draw方法相关的知识,希望对你有一定的参考价值。
我需要覆盖draw方法,但是我收到错误消息:
Draw(System.Drawing.PointF)'被标记为覆盖,但没有找到合适的方法来覆盖(CS0115)。
这就是我所做的:我创建一个新项目,添加一个空类并尝试覆盖。
这是代码:
using System;
using UIKit;
using System.Drawing;
using CoreGraphics;
using CoreImage;
using Foundation;
using CoreAnimation;
namespace Test
{
public class Tester : UIView
{
CGPath path;
public override void Draw (PointF rect){
base.Draw ();
}
public Tester ()
{
path = new CGPath ();
}
}
}
其实我正在尝试Xamarin的教程。 http://developer.xamarin.com/guides/ios/application_fundamentals/graphics_animation_walkthrough/
答案
问题是您使用Unified API创建程序(请参阅顶部的“使用CoreImage”)。在Unified API中,我们不再使用PointF,SizeF或RectangleF,因为它们是32位结构,因此它们不能在32/64位模式下工作。
在Unified中,您需要使用“CGRect”而不是“RectangleF”
所以要修复你的程序,你所要做的就是用“CGRect”替换“RectangleF”
这些教程目前反映的是Classic API,一旦我们正式发布Unified的最终版本,它们将被切换。
另一答案
您不能覆盖不同的方法。原始方法没有参数。如果要覆盖Draw方法,则需要删除Draw函数参数。
以上是关于无法覆盖UIView.Draw方法的主要内容,如果未能解决你的问题,请参考以下文章
@IBDesignable UiView draw(_ rect: CGRect) 在 IB 中有效,但在设备上无效