2016-05-15 1 views
0

Bonjour,Container signalées correctement à partir RCTUIManager.measure et OnLayout

Je suis en train de faire défiler un programme ScrollView qui détient un conteneur de vue qui est plus grande que la ScrollView en taille réelle. Cependant, le ScrollView doit couper le conteneur à une taille prédéterminée. Donc, si la hauteur ScrollView est 600px et la taille du conteneur est 1000px alors j'ai besoin d'accéder à la 1000px afin que je puisse défiler fluidiquement par programmation. Ce problème a été résolu sur github pour un autre développeur ici, mais cela ne semble pas fonctionner pour moi. Voici ce que j'ai essayé:

<ScrollView> <View onLayout={(event) => {console.log(event.nativeEvent.layout);}> ... </View> </ScrollView>

Tentative 1: Mettez un rappel OnLayout à la fois la ScrollView et la vue intérieure et utiliser la hauteur de mise en page innerViews. Résultat: Cela ne fonctionne pas aussi bien la ScrollView et Vue intérieure rapportent une hauteur de 600.

Tentative 2: Enregistrer référence au ScrollView puis appeler la fonction de mesure de RCTUIManager ultérieurement comme ceci:

Résultat: Cela ne fonctionnait pas non plus, innerViewNode signale de nouveau une hauteur de conteneur (4ème paramètre dans les données) de 600.

Quelqu'un at-il une solution différente pour recevoir la hauteur du conteneur? Je suis définitivement en train de mettre une vue de 1000 px dans une vue de défilement de 600 px et quand je défile par programmation disons 100px, je peux voir que le contenu est en fait plus grand que le wrapper ScrollView.

Merci pour toute aide que n'importe qui peut fournir!

Répondre

0

Voici une solution que je trouve au travail:

<ScrollView> 
    {{...components of variable length...}} 
    <View key="bottomMarker" onLayout={() => {console.log(event.nativeEvent.layout.y)}}></View> 
</ScrollView> 

En utilisant la vue comme marqueur pour le fond, vous pouvez trouver l'emplacement du bas de la vue de défilement.