-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
59 lines (53 loc) · 1.69 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import React, { Component } from 'react';
import { requireNativeComponent, Platform, ScrollView, UIManager, findNodeHandle } from 'react-native';
const RCTZoomLayout = requireNativeComponent('RCTZoomLayout');
export default class ZoomLayout extends Component {
state = {}
static defaultProps = {
minZoom: 1,
maxZoom: 3,
}
refZoomLayout = ref => {
this.zoomLayout = ref;
}
scrollTo = (x, y, animated) => {
if (Platform.OS === 'ios') {
this.zoomLayout.scrollTo(x, y, animated)
} else {
UIManager.dispatchViewManagerCommand(
findNodeHandle(this),
UIManager.RCTZoomLayout.Commands.moveTo,
[2, x, y, animated],
);
}
}
render() {
const { minZoom, maxZoom, children } = this.props;
if (Platform.OS === 'ios')
return (
<ScrollView
{...this.props}
contentContainerStyle={this.props.style}
ref={this.refZoomLayout}
maximumZoomScale={maxZoom}
minimumZoomScale={minZoom}
pinchGestureEnabled
zoomScale={this.state.zoomScale}
>
{children}
</ScrollView>
)
else return (
<RCTZoomLayout
{...this.props}
ref={this.refZoomLayout}
style={this.props.style}
minZoom={minZoom}
maxZoom={maxZoom}
overPinchable
zoomEnabled
>
{children}
</RCTZoomLayout>)
}
}