ios xamarin binding frameworks native

Encuadernación iOS embedded Framework para Xamarin END UP da excepción?



binding frameworks (1)

Por favor, ayuda mi último paso. Gracias.

Estoy probando un framework nativo de iOS vinculante para la biblioteca Xamarin.

  1. Creé el marco iOS y agregué MyView.h, MyView.m

    • MyView.m

    (instancetype) initWithFrame: (CGRect) frame {id p = [super initWithFrame: frame]; self.backgroundColor = [UIColor greenColor];
    return p; }

    • MyView.h

    @interface MyView: UIView @end

marco muy simple.

  1. agregue ese MyView.h al encabezado público y haga el marco universal para cualquier arquitectura. Este marco ahora tiene

    firstfile.h, MyView.h

dos archivos como encabezados públicos

  1. Creé la aplicación de prueba de iOS (aplicación de VC única) y probé este framework.

    MyView * v = [[MyView alloc] initWithFrame: CGRectMake (0, 0, 100, 100)]; [self.view addSubview: v];

Funcionó como yo esperaba. Dibujó una caja verde.

  1. Creé el proyecto de biblioteca Xamarin e importé este archivo de estructura en la carpeta de referencia nativa haciendo clic con el botón derecho y agregué el archivo

  2. Agregue estas líneas a ApiDefinition.cs en la Biblioteca Xamarin

    [BaseType (typeof (UIView))] interfaz MyView {[Exportar ("initWithFrame:")] IntPtr Constructor (marco CGRect); }

construir bien

  1. Creé la aplicación Xamarin.iOS e importé esta biblioteca a la solución y la probé.

    MyView v = new MyView (nuevo CGRect (0, 0, 100, 100)); this.View.AddSubview (v);

BUILD OK! pero error de tiempo de ejecución.

La excepción ha sido lanzada por el objetivo de una invocación.

Como soy nuevo con CSharp y mono. No fue fácil venir aquí, ¿podrían ayudarme un poco en este punto?

Mi idea es que debería haber algo que apunte MyView.h en el paso Nº5. Pero no sé qué debería haber allí.

mi código fuente completo está aquí: https://github.com/myallb/test_iosstaticlib_to_xamarin

Este código está utilizando Static Library instead framework. Estaba probando una opción diferente.


Un enlace de marco de ejemplo ....

iOS basado en GreenView Universal Framework (a través de Xcode):

  • Agregue una nueva clase Cocoa Touch denominada subclase UIView :

MyView.h :

#import <UIKit/UIKit.h> @interface MyView : UIView { } @end

MyView.m :

#import "GreenView/MyView.h" @implementation MyView - (void)baseInit { self.backgroundColor = [UIColor greenColor]; } - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self baseInit]; } return self; } - (id)initWithCoder:(NSCoder *)aDecoder { if ((self = [super initWithCoder:aDecoder])) { [self baseInit]; } return self; } @end

GreenView.h :

#import <UIKit/UIKit.h> FOUNDATION_EXPORT double GreenViewVersionNumber; FOUNDATION_EXPORT const unsigned char GreenViewVersionString[]; #import "MyView.h"

Ejemplo de Sharpie (para iniciar el ApiDefinition.cs )

sharpie bind -sdk iphoneos9.3 -o GreenViewBinding GreenView.framework/Headers/*.h

Crear un Xamarin.iOS enlace Xamarin.iOS :

  • Agregue GreenView.framework como referencia nativa

ApiDefinition.cs

using UIKit; namespace GreenViewBinding { // @interface MyView : UIView [BaseType(typeof(UIView))] interface MyView { } }

Uso:

  • Crear una aplicación de vista única de iOS

  • Agregue el proyecto de enlace como referencia.

ViewController.cs Método ViewDidLoad :

public override void ViewDidLoad() { base.ViewDidLoad(); var view = new GreenViewBinding.MyView(); view.Frame = new CoreGraphics.CGRect(40, 40, 100, 100); Add(view); }

Salida: