2

IOS 静的ライブラリの正しいバインディングを定義するのに苦労しています。インクルード ファイルには、次のように定義されたいくつかの拡張メソッドが含まれています。

#import <Foundation/Foundation.h>
@interface UIView(LayerEffects)

// set round corner
- (void) setCornerRadius : (CGFloat) radius;
// set inner border
- (void) setBorder : (UIColor *) color width : (CGFloat) width;
// set the shadow
// Example: [view setShadow:[UIColor blackColor] opacity:0.5 offset:CGSizeMake(1.0, 1.0) blueRadius:3.0];
- (void) setShadow : (UIColor *)color opacity:(CGFloat)opacity offset:(CGSize) offset blurRadius:(CGFloat)blurRadius;

@end

Monotouch のドキュメント ( Binding Class Extensions ) では、これを実際に処理する方法が明確ではありません。

これも拡張 C# メソッドとして定義する必要がありますか? それとも、クラス「LayerEffects」でこれを定義する必要がありますか?

次のマッピングを更新しても機能しません:

[BaseType (typeof (UIView))]
interface LayerEffects{

    [Bind ("setCornerRadius:")]
    void SetCornerRadius ([Target] UIView uiView, float width);

    [Bind ("setBorder:width")]
    void SetBorder ([Target] UIView uiView, UIColor color, float width);

    [Bind ("setShadow:opacity:offset:blurRadius")]
    void SetShadow ([Target] UIView uiView, UIColor color, float opacity, SizeF offset, float blurRadius);

}
4

1 に答える 1

0

バインディングを作成するには、新しいクラスを定義する必要があると思います。

[BaseType(typeof(UIView))]
public interface UIViewLayerEffects
{

}

しかし、これはあなたの状況を本当に助けません。

あなたはこれを任意のUIView権利で使用したいですか?

下のコードを C# に変換する方が簡単かもしれません。これらのメソッドを実装するのはそれほど難しくありません。たとえば、私setCornerRadiusはこれだけだと思います:

myView.Layer.CornerRadius = 3f;
于 2012-10-31T12:21:52.853 に答える