Use React Native draw Canvas(ios)

前端之家收集整理的这篇文章主要介绍了Use React Native draw Canvas(ios)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Use React Native draw Canvas(ios)


1.Canvas.js
'use strict'
var React = require('react-native');
var {
  View,WebView
} = React;

var Canvas = React.createClass({
  propTypes: {
    context: React.PropTypes.object,render: React.PropTypes.func.isrequired
  },render() {
    var contextString = JSON.stringify(this.props.context);
    var renderString = this.props.render.toString();
    return (
      <View>
        <WebView automaticallyAdjustContentInsets={false}
          html={"<style>*{margin:0;padding:0;}canvas{position:absolute;transform:translateZ(0);}</style><canvas></canvas><script>var canvas=document.querySelector('canvas');(" + renderString + ").call(" + contextString + ",canvas);</script>"}
          opaque={false} underlayColor={'transparent'}
          style={this.props.style} />
      </View>
    );
  }
});
module.exports = Canvas;

2. index.ios.js
/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 */
'use strict';
var React = require('react-native');
var {
  AppRegistry,Text,View,Component
} = React;
var Canvas = require('./Canvas');

var SimpleApp = React.createClass({
  render() {
    var context = {msg: "Hello!"};
    return (
      <View style={styles.container}>
        <View>
          <Canvas context={context}
          render={renderCanvas}
          style={{height: 200,width: 200}} />
        </View>
      </View>
    )
  }
});

function renderCanvas(canvas) {
  var message = this.msg;
  var ctx = canvas.getContext('2d'),particles = [],patriclesNum = 50,w = 200,h = 200,colors = ['#f35d4f','#f36849','#c0d988','#6ddaf1','#f1e85b'];
  canvas.width = 200;
  canvas.height = 200;
  canvas.style.left = (window.innerWidth - 200) / 2 + 'px';
  if (window.innerHeight > 200)
    canvas.style.top = (window.innerHeight - 200) / 2 + 'px';

  function draw() {
    ctx.font = "20px Georgia";
    ctx.fillText(message,10,50);
  }
  draw();
}

var styles = React.StyleSheet.create({
  container: {
    padding: 30,marginTop: 65,borderColor: '#e7e7e7',},});

AppRegistry.registerComponent('SimpleApp',() => SimpleApp);
原文链接:https://www.f2er.com/react/307048.html

猜你在找的React相关文章