如何在Xamarin iOS中创建类别

时间:2018-03-22 07:06:58

标签: xamarin xamarin.ios

我是Xamrin&的新手尝试为UItextField创建一个类别,如下所示

using UIKit;
using System.Diagnostics.Contracts;
using CoreGraphics;
using System.ComponentModel;
using Foundation;

namespace WeatherApp.iOS.Extension
{
    [Category(typeof(UITextField))]
    public static class UITextFieldExtensionMethod
    {
        [Export ("setBottomBorder")]
        static UITextField setBottomBorder(this UITextField self)
        {
            Contract.Ensures(Contract.Result<UITextField>() != null);
            self.BorderStyle = UITextBorderStyle.None;
            self.Layer.MasksToBounds = true;
            self.Layer.ShadowColor = UIColor.FromRGB(red: (System.nfloat)230.0, green: (System.nfloat)230.0, blue: (System.nfloat)230.0).CGColor;
            self.Layer.ShadowOffset = new CGSize(width: 0.0, height: 0.9);
            self.Layer.ShadowOpacity = 1.0f;
            self.Layer.ShadowRadius = 0.0f;
            return self;
        }
    }
}

但在 [类别(类型(UITextField))] 上收到错误

无法转换为“System.Type&#39;到&#39;字符串&#39; (CS1503)

请在创建类别时告诉我我做错了什么。我正在使用Visual Studio for Mac。

2 个答案:

答案 0 :(得分:1)

卸下:

using System.ComponentModel;

并添加:

using ObjCRuntime;

你添加了错误的使用。

答案 1 :(得分:0)

由于您是import cv2 cap = cv2.VideoCapture(0) cv2.namedWindow('frame', cv2.WINDOW_NORMAL) while True: key = cv2.waitKey(0) & 0xFF ret, frame = cap.read() cv2.imshow('frame', frame) cv2.waitKey(0) if key == ord('q'): cap.release() cv2.destroyAllWindows() break if key == ord('c'): cv2.imwrite('capture.jpg', frame) cap.release() cv2.destroyAllWindows() ,请参阅此API:CategoryAttribute Class。此属性只能接受字符串参数。

您想使用ObjCRuntime.CategoryAttribute Class吗?使用此命名空间,您可以成功使用它。