绑定iOS Xamarin的embedded式框架END UP给予exception?
请帮助我的最后一步。 谢谢。
我testing绑定的iOS本机框架Xamarin库。
-
我创build了iOS框架并添加了MyView.h,MyView.m
- MyView.m
(instancetype)initWithFrame:(CGRect)frame {id p = [super initWithFrame:frame]; self.backgroundColor = [UIColor greenColor];
返回p; }- MyView.h
@interface MyView:UIView @end
非常简单的框架。
-
将MyView.h添加到公共标题中,并为任何体系结构创build通用框架。 这个框架现在已经
firstfile.h,MyView.h
两个文件作为公共标题
-
我创build了iOStesting应用程序(单个VC应用程序),并尝试这个框架。
MyView * v = [[MyView alloc] initWithFrame:CGRectMake(0,0,100,100)]; [self.view addSubview:v];
它按我的预期工作。 它画了一个绿色的盒子。
-
我创build了Xamarin Library项目,并通过点击鼠标右键并添加文件,将这个框架文件导入本地参考文件夹
-
将此行添加到Xamarin库中的ApiDefinition.cs中
[BaseType(typeof(UIView))]接口MyView {[Export(“initWithFrame:”)] IntPtr构造函数(CGRect框架); }
build立好。
-
我创build了Xamarin.iOS应用程序,并将此库导入到解决scheme并进行testing。
MyView v = new MyView(new CGRect(0,0,100,100)); this.View.AddSubview(V);
编好! 但运行时错误。
exception是由调用的目标引发的。
因为我是CSharp和mono的新手。 来这里并不容易,你能帮我点一下吗?
我的线索是在第五步中应该有一些指向MyView.h的东西。 但我不知道应该在那里。
我的完整源代码在这里: https : //github.com/myallb/test_iosstaticlib_to_xamarin
此代码使用静态库,而不是框架。 我正在尝试不同的select。
框架绑定示例
基于iOS的GreenView
通用框架(通过Xcode):
- 添加一个名为
MyView
子类化UIView
的新的Cocoa Touch类:
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"
Sharpie示例(要启动ApiDefinition.cs
)
sharpie bind -sdk iphoneos9.3 -o GreenViewBinding GreenView.framework/Headers/*.h
创build一个Xamarin.iOS
绑定项目:
- 将
GreenView.framework
添加GreenView.framework
机参考
ApiDefinition.cs
using UIKit; namespace GreenViewBinding { // @interface MyView : UIView [BaseType(typeof(UIView))] interface MyView { } }
用法:
-
创build一个iOS单一视图应用程序
-
添加绑定项目作为参考。
ViewController.cs
ViewDidLoad
方法:
public override void ViewDidLoad() { base.ViewDidLoad(); var view = new GreenViewBinding.MyView(); view.Frame = new CoreGraphics.CGRect(40, 40, 100, 100); Add(view); }
输出:
- 当spritekit swift中的节点被触摸时声音不播放
- 如果用户使用Firebase身份validation和Swiftvalidation了他们的电子邮件,我该如何redirect到我的应用程序?