最近在学习着react-native,看到可以封装组件功能,就尝试着封装一个swift版本的(网上搜半天都是oc愣是研究半天)
初始化一个React-native工程后,因是oc工程,直接创建一个swift的类会提示创建Bridging-header的头文件.
将用到的React的文件引入
#import <React/RCTBridgeModule.h> #import <React/RCTBundleURLProvider.h> #import <React/RCTRootView.h> #import <React/RCTViewManager.h> 然后创建一个.m的oc文件引入对应的头文件我创建的为CamerManageBridge.m
#import <React/RCTBridgeModule.h> #import <React/RCTViewManager.h> #import "工程名-Swift.h"第三个文件为与swift创建的类引用进 .规范则为工程名-Swift.h
CamerManageBridge.m代码实现
@interface CameraManage: RCTViewManager @end @implementation CameraManage RCT_EXPORT_MODULE() - (UIView *) view { return [[CameraView alloc] initWithFrame:[UIScreen mainScreen].bounds]; } @end上CameraView则为swift创建的文件.
继承自React-native 的RCTViewManager RCT_EXPORT_MODULE()则为暴露给js看的---具体官网API都很有详细介绍到.
最后将该View直接返回给React-native使用
使用方法:
import { requireNativeComponent, } from 'react-native' let Camera = requireNativeComponent("CameraManage",CameraView); export default class CameraView extends Component { constructor(props) { super(props); this.state = { }; } render(){ return( <Camera /> ); } }以上则为我这两天折腾出的效果.