これをC#に移植したい。
これをどのように変換すればよいかわかりません:
@property (nonatomic, strong, readonly) CAGradientLayer *layer;
これlayer
は、UIView のデフォルト レイヤーです。Xamarin には既にLayer
プロパティがあります。これを上書きするにはどうすればよいですか?上書きする必要がありますか?
私もそれを試しました
public CAGradientLayer layer { [Export ("Layer")] get; [Export ("Layer:")] set; }
しかし、レイヤーの色を設定したい場合、アプリがクラッシュします(セルをデキューするときにSystem.Reflection.TargetInvocationException - NullReferenceException)。さらに、読み取り専用にする必要があります。
次に、ドキュメントでどのように変換できるかを見ました:
public class BlueView : UIView
{
[Export ("layerClass")]
public static Class GetLayerClass ()
{
return new Class (typeof (BlueLayer));
}
public override void Draw (RectangleF rect)
{
// Do nothing, the Layer will do all the drawing
}
}
public class BlueLayer : CALayer
{
public override void DrawInContext (CGContext ctx)
{
ctx.SetFillColor (0, 0, 1, 1);
ctx.FillRect (Bounds);
}
}
配列を使用できるようにSetFillColorsのようなものが必要なため、これは役に立ちませんCGColor[]
。しかし、そのような機能はありません。
Monotouch を使用して C# でUIView
カスタムを作成するにはどうすればよいですか?CAGradientLayer