无法覆盖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 中有效,但在设备上无效

Emmet 覆盖片段

片段布局不覆盖整个屏幕

覆盖片段中的后退按钮

Clang 抱怨“无法覆盖已删除的函数”,而没有删除任何函数

如何使用模块化代码片段中的LeakCanary检测内存泄漏?