无法重写 UIView.Draw 方法

本文关键字:Draw 方法 UIView 重写 | 更新日期: 2023-09-27 18:33:17

我需要覆盖 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/

无法重写 UIView.Draw 方法

问题是你用统一API创建了一个程序(参见顶部的"使用CoreImage")。 在统一 API 中,我们不再使用 PointF、SizeF 或 RectangleF,因为它们是 32 位结构,因此它们不适用于 32/64 位模式。

在Unified中,你需要使用"CGRect"而不是"RectangleF"。

因此,要修复您的程序,您所要做的就是将"RectangleF"替换为"CGRect"

这些教程目前反映了经典 API,一旦我们正式发布 Unified 的最终版本,它们将被切换。

不能重写不同的方法。原始方法没有参数。如果要重写 Draw 方法,则需要删除 Draw 函数参数。