2015-07-25 2 views
4

Я искал PanResponder. Моя текущая рабочая гипотеза заключается в том, что я обнаружил бы, есть ли два касания, которые движутся наружу, и если да, увеличьте размер элемента в функции onPanResponderMove.Как бы вы реализовали pinch-zoom в реакции-native?

Это похоже на грязный способ сделать это. Есть ли более плавный путь?

+1

Я работаю над этим прямо сейчас. Я дам вам знать, что я нахожу. – Jehan

+0

@Jehan любые новости? :) – eden

+0

@EnieJakiro Это не здорово. Математика для этого довольно проста, но JS казалась слишком медленной/не отвечающей, чтобы держать вещи вместе. Удерживал появление странных контуров обратной связи, где масштабирование будет идти. Лучшим способом сделать это было бы программное масштабирование зума изначально и снабдить особый вид увеличения зума на RN – Jehan

ответ

1

Если вам нужно только простые функции масштабирования щепотку просто использовать Scrollview (doc here)

Просто дайте maximumZoomScale (больше одного) и minimumZoomScale, как вы хотите.

+3

Это только iOS, верно? Есть ли способ заставить это работать на Android? –

+0

@DanLeveille Это только для ios, я не уверен в андроиде ... – Rahul

1

Помимо просмотра ответа на вопросник, вам необходимо также взглянуть на Gesture Responder System.

В частности, evt, который возвращается респондентами. Вот что говорят документы React-Native.

evt is a synthetic touch event with the following form: 

nativeEvent 
    changedTouches - Array of all touch events that have changed   since the last event 
    identifier - The ID of the touch 
    locationX - The X position of the touch, relative to the element 
    locationY - The Y position of the touch, relative to the element 
    pageX - The X position of the touch, relative to the root element 
    pageY - The Y position of the touch, relative to the root element 
    target - The node id of the element receiving the touch event 
    timestamp - A time identifier for the touch, useful for velocity calculation 
    touches - Array of all current touches on the screen 

Теперь, когда у вас есть касания, вы можете определить, какие области/объекты касаются и соответственно отрегулировать элемент.

+1

что такое «идентификатор узла»? как вы знаете, у какого компонента есть идентификатор? – Piotr

0

Вам необходимо использовать Gesture Responder System.

Простые жесты и зумы требуют перевода и масштабирования.

Чтобы рассчитать коэффициенты перевода и масштаба, вы хотите сохранить события касания и использовать дельта-точки касания.

Я написал модуль NPM, который делает это.

react-native-pinch-zoom-responder

Смежные вопросы