⚠️ NOTE [12/08/2021]: Archiving this repository because I haven't had the resources to maintain it for a while. Apologies.
A React Native component for touch-based drawing.
Install the module from npm:
npm i -S react-native-sketch
Link the module to your project:
react-native link react-native-sketch
import React from 'react';
import { Alert, Button, View } from 'react-native';
import Sketch from 'react-native-sketch';
export default class MyPaint extends React.Component {
save = () => {
this.sketch.save().then(({ path }) => {
Alert.alert('Image saved!', path);
});
};
render() {
return (
<View style={{ flex: 1 }}>
<Sketch
ref={sketch => {
this.sketch = sketch;
}}
strokeColor="#ff69b4"
strokeThickness={3}
/>
<Button onPress={this.save} title="Save" />
</View>
);
}
}
Here are the props
of the the component:
Name | Type | Default value | Comment |
---|---|---|---|
fillColor |
String |
null |
The color of the sketch background. Default to null to keep it transparent! Note: This is different from the style.backgroundColor property, as the former will be seen in your exported drawing image, whereas the latter is only used to style the view. |
imageType |
String |
png |
The type of image to export. Can be png or jpg . Default to png to get transparency out of the box. |
onChange |
Function |
() => {} |
Callback function triggered after every change on the drawing. The function takes one argument: the actual base64 representation of your drawing. |
onClear |
Function |
() => {} |
Callback function triggered after a clear has been triggered. |
strokeColor |
String |
'#000000' |
The stroke color you want to draw with. |
strokeThickness |
Number |
1 |
The stroke thickness, in pixels. |
style |
Style object | null |
Some View styles if you need. |
The component also has some instance methods:
Name | Return type | Comment |
---|---|---|
clear() |
Promise |
Clear the drawing. This method is a Promise mostly to be consistent with save() , but you could simply type: this.sketch.clear(); |
save() |
Promise |
Save the drawing to an image, using the defined props as settings (imageType , fillColor , etc...). The Promise resolves with an object containing the path property of that image. Ex: this.sketch.save().then(image => console.log(image.path)); |
The project contains a folder examples
that contains few demos of how to use react-native-sketch
. Just copy and paste the code to your React Native application.
Basic
: uses the bare minimum to make it work.Digital Touch
: tries to reproduce the look and feel of iOS Message Digital Touch.Feel free to play with them!
detach
to ExpoKit, as this module uses native iOS code.Feel free to contribute by sending a pull request or creating an issue.