React Native图表插件react-native-charts-wrapper集成教程

时间:2022-09-04 09:36:58

最近公司项目要用到图标显示,在网上找了好多天找到react-native-charts-wrapper,这款第三方图形很全,功能也很强大,就和大家一起分享下使用心得:(iOS端),好了,话不多说,接下来开始一步一步集成图表插件react-native-charts-wrapper:
React Native图表插件react-native-charts-wrapper集成教程
react-native-charts-wrapper GitHub地址

1.新建一个项目

React Native图表插件react-native-charts-wrapper集成教程

出现下面界面时,说明项目已经创建成功:

React Native图表插件react-native-charts-wrapper集成教程

2.安装react-native-charts-wrapper (注意:一定要在根目录下安装)

进入项目根目录执行 npm install –save react-native-charts-wrapper

React Native图表插件react-native-charts-wrapper集成教程

3.把该目录下ZylCharts/node_modules/react-native-charts-wrapper/ReactNativeCharts的整个ReactNativeCharts文件夹,拖入到项目中

React Native图表插件react-native-charts-wrapper集成教程
React Native图表插件react-native-charts-wrapper集成教程

拖入后:

React Native图表插件react-native-charts-wrapper集成教程

4.Add Bridge File:因为后面会用到SwiftyJSONandiOS Charts,这是用Swift写的,所以我们需要一个桥接文件,方法如下:

新建一个工程名-Bridging-Header.h头文件(注意,必须是工程名开头!!!):

React Native图表插件react-native-charts-wrapper集成教程

React Native图表插件react-native-charts-wrapper集成教程

React Native图表插件react-native-charts-wrapper集成教程

5.接下来就需要使用我前面说的SwiftyJSONandiOS Charts

这里已经下好了,链接地址: https://pan.baidu.com/s/1o7Y3oRg 密码: 32j9

下载下拉解压后,拖到iOS项目根目录下:

React Native图表插件react-native-charts-wrapper集成教程

6.把刚刚的两个文件夹中的SwiftyJSON.xcodeproj and Charts.xcodeproj拖到工程的libraries中:

React Native图表插件react-native-charts-wrapper集成教程

React Native图表插件react-native-charts-wrapper集成教程

8.添加SwiftyJSON.frameworkand Charts.framework 到 Embedded Binaries.

React Native图表插件react-native-charts-wrapper集成教程

然后:Edit -> Convert -> To Current Swift Syntax…

React Native图表插件react-native-charts-wrapper集成教程

React Native图表插件react-native-charts-wrapper集成教程
完成之后点击save。

接下来在桥文件里面添加:

React Native图表插件react-native-charts-wrapper集成教程

9.到这里配置已经完成,花键+b变一下程序:

遇到错误:
1.Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1
2.Command /usr/bin/ditto failed with exit code 1
原因:运行从网下下载的swift项目的时候,基本上都会出现这个错误。意思是找不到项目文件。
解决方法:直接忽略,运行程序就好。

这样就配置好了,项目中的报错也就解决了!

下面就根据react-native-charts-wrapper文档示例代码,写个柱形图。

index.ios.js:

import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View
} from 'react-native';

import ZylChartScreen from './ZylChartScreen';

export default class ZylCharts extends Component {
render() {
return (

<ZylChartScreen />

);
}
}



AppRegistry.registerComponent('ZylCharts', () => ZylCharts);

ZylChartScreen.js:

/**
* Created by zhangyanlf on 17/5/23.
*/

import React from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
processColor
} from 'react-native';

import {BarChart} from 'react-native-charts-wrapper';

class ZylBarChartScreen extends React.Component {

constructor() {
super();

this.state = {
legend: {
enabled: true,
textSize: 14,
form: 'SQUARE',
formSize: 14,
xEntrySpace: 10,
yEntrySpace: 5,
formToTextSpace: 5,
wordWrapEnabled: true,
maxSizePercent: 0.5
},
data: {
dataSets: [{
values: [{y: 100},
{y: 105},
{y: 102},
{y: 110},
{y: 114},
{y: 109},
{y: 105},
{y: 99},
{y: 95}],
label: 'Bar dataSet',
config: {
color: processColor('teal'),
barSpacePercent: 40,
barShadowColor: processColor('lightgrey'),
highlightAlpha: 90,
highlightColor: processColor('red'),
}
}],
},
xAxis: {
valueFormatter: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep'],
granularityEnabled: true,
granularity : 1,
}
};
}

handleSelect(event) {
let entry = event.nativeEvent
if (entry == null) {
this.setState({...this.state, selectedEntry: null})
} else {
this.setState({...this.state, selectedEntry: JSON.stringify(entry)})
}
}


render() {
return (
<View style={{flex: 1}}>
<View style={{height:80,marginTop: 15}}>

<Text style={styles.entryStyle}> selected entry</Text>
<Text style={styles.entryStyle}> {this.state.selectedEntry}</Text>
</View>


<View style={styles.container}>
<BarChart
style={styles.chart}
data={this.state.data}
xAxis={this.state.xAxis}
animation={{durationX: 2000}}
legend={this.state.legend}
gridBackgroundColor={processColor('#ffffff')}
drawBarShadow={false}
drawValueAboveBar={true}
drawHighlightArrow={true}
onSelect={this.handleSelect.bind(this)}
/>
</View>
</View>
);
}
}

const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#F5FCFF',

},
chart: {
flex: 1
},
entryStyle: {
color: 'orange',
alignItems: 'center',
justifyContent: 'center'
}
});

export default ZylBarChartScreen;

效果图:
React Native图表插件react-native-charts-wrapper集成教程

ok,就先写一个柱形图,其他的以后有时间再继续学习!!!

文章以同步到个人博客:传送门