从官方的Demo,我们知道,要在客户端显示Weex页面,是通过WXSDKInstance的实例实现的。我们先来看看这个类里面都有什么:
@interface WXSDKInstance : NSObject // 需要渲染的viewController @property (nonatomic, weak) UIViewController *viewController; // Native根容器的View是完全受WXSDKInstance控制,开发者无法更改 @property (nonatomic, strong) UIView *rootView; // 如果组件想固定rootview的frame,可以把这个属性设置为YES,当weex进行layout的时候,就不会改变rootview的frame了。反之设置为NO @property (nonatomic, assign) BOOL isRootViewFrozen; /** * Which indicates current instance needs to be validated or not to load,default value is false. **/ @property (nonatomic, assign) BOOL needValidate; // weex bundle的scriptURL @property (nonatomic, strong) NSURL *scriptURL; // 父Instance @property (nonatomic, weak) WXSDKInstance *parentInstance; // 父Instance节点的引用 @property (nonatomic, weak) NSString *parentNodeRef; // 用来标识当前weex instance独一无二的ID @property (nonatomic, strong) NSString *instanceId; /** * Which indicates current instance needs to be prerender or not,default value is false. **/ @property (nonatomic, assign) BOOL needPrerender; // 当前weex instance的状态 @property (nonatomic, assign) WXState state; // 当weex instance完成rootView的创建时的回调block @property (nonatomic, copy) void (^onCreate)(UIView *); // 根容器的frame改变时候的回调 @property (nonatomic, copy) void (^onLayoutChange)(UIView *); // 当weex instance完成渲染时的回调block @property (nonatomic, copy) void (^renderFinish)(UIView *); // 当weex instance刷新完成时的回调block @property (nonatomic, copy) void (^refreshFinish)(UIView *); // 当weex instance渲染失败时的回调block @property (nonatomic, copy) void (^onFailed)(NSError *error); /** * The callback triggered when js occurs runtime error while executing. * * @return A block that takes a WXJSExceptionInfo argument, which is the exception info **/ @property (nonatomic, copy) void (^onJSRuntimeException)(WXJSExceptionInfo * jsException); // 当weex instance页面滚动时的回调block @property (nonatomic, copy) void (^onScroll)(CGPoint contentOffset); // 当weex instance渲染过程中的回调block @property (nonatomic, copy) void (^onRenderProgress)(CGRect renderRect); /** * The callback triggered when the bundleJS request finished in the renderWithURL. * @return A block that takes response which the server response,request which send to server,data which the server returned and an error */ @property (nonatomic, copy) void(^onJSDownloadedFinish)(WXResourceResponse *response,WXResourceRequest *request,NSData *data, NSError* error); // 当前weex instance的frame @property (nonatomic, assign) CGRect frame; // user存储的一些信息 @property (atomic, strong) NSMutableDictionary *userInfo; // css单元和设备像素的换算比例因子 @property (nonatomic, assign, readonly) CGFloat pixelScaleFactor; // 是否监测组件的渲染 @property (nonatomic, assign)BOOL trackComponent; /** * Renders weex view with bundle url. * * @param url The url of bundle rendered to a weex view. **/ - (void)renderWithURL:(NSURL *)url; /** * Renders weex view with bundle url and some others. * * @param url The url of bundle rendered to a weex view. * * @param options The params passed by user * * @param data The data the bundle needs when rendered. Defalut is nil. **/ - (void)renderWithURL:(NSURL *)url options:(NSDictionary *)options data:(id)data; ///** // * Renders weex view with resource request. // * // * @param request The resource request specifying the URL to render with. // * // * @param options The params passed by user. // * // * @param data The data the bundle needs when rendered. Defalut is nil. // **/ //- (void)renderWithRequest:(WXResourceRequest *)request options:(NSDictionary *)options data:(id)data; /** * Renders weex view with source string of bundle and some others. * * @param options The params passed by user. * * @param data The data the bundle needs when rendered. Defalut is nil. **/ - (void)renderView:(NSString *)source options:(NSDictionary *)options data:(id)data; // forcedReload为YES,每次加载都会从URL重新读取,为NO,会从缓存中读取 - (void)reload:(BOOL)forcedReload; /** * Refreshes current instance with data. * * @param data The data the bundle needs when rendered. **/ - (void)refreshInstance:(id)data; /** * Destroys current instance. **/ - (void)destroyInstance; /** * Trigger full GC, for dev and debug only. **/ - (void)forceGarbageCollection; /** * get module instance by class */ - (id)moduleForClass:(Class)moduleClass; /** * get Component instance by ref, must be called on component thread by calling WXPerformBlockOnComponentThread */ - (WXComponent *)componentForRef:(NSString *)ref; /** * Number of components created, must be called on component thread by calling WXPerformBlockOnComponentThread */ - (NSUInteger)numberOfComponents; /** * check whether the module eventName is registered */ - (BOOL)checkModuleEventRegistered:(NSString*)event moduleClassName:(NSString*)moduleClassName; /** * fire module event; * @param module which module you fire event to * @param eventName the event name * @param params event params */ - (void)fireModuleEvent:(Class)module eventName:(NSString *)eventName params:(NSDictionary*)params; /** * fire global event */ - (void)fireGlobalEvent:(NSString *)eventName params:(NSDictionary *)params; /** * complete url based with bundle url */ - (NSURL *)completeURL:(NSString *)url; /** * application performance statistics */ @property (nonatomic, strong) NSString *bizType; @property (nonatomic, strong) NSString *pageName; @property (nonatomic, weak) id pageObject; @property (nonatomic, strong) NSMutableDictionary *performanceDict; /** * Deprecated */ @property (nonatomic, strong) NSDictionary *properties DEPRECATED_MSG_ATTRIBUTE(); @property (nonatomic, assign) NSTimeInterval networkTime DEPRECATED_MSG_ATTRIBUTE(); @property (nonatomic, copy) void (^updateFinish)(UIView *); @end