2016-04-22 5 views
9

मैं एक प्रतिक्रियात्मक मूल स्क्रॉलव्यू में सामग्री (एकाधिक छवियों को लंबवत व्यवस्थित) रखना चाहता हूं (केवल आईओएस केवल, एंड्रॉइड बाद में आएगा) जो फोन की स्क्रीन से बड़ा है, और ज़ूम आउट करना शुरू करें ताकि यह सब एक जैसा दिखाई दे पहर।रिएक्ट नेटिव के स्क्रॉल व्यू को प्रारंभिक ज़ूम कैसे 1 नहीं बनाया जाए?

वहाँ एक componentDidMount कॉल कि ज़ूम आउट स्क्रीन में फिट करने के लिए सामग्री,

<ScrollView 
    style={{width: 500, height: 1000}} 
    // + whatever other properties make this work required way 
> 
    <View style={{width: 2000, height: 5000}}> 
    <Image style={{width: 2000, height: 2000}} source={.....}/> 
    <Image style={{width: 2000, height: 3000}} source={.....}/> 
    </View> 
</ScrollView> 

मैं 'zoomScale' संपत्ति की स्थापना की कोशिश की तरह कुछ में ScrollView.scrollResponderZoomTo का उपयोग कर के किसी भी अच्छे उदाहरण हैं, लेकिन यह लगता है ध्यान नहीं दिया जा और हमेशा मान 1

का उपयोग करता है इस मुद्दे (https://github.com/facebook/react-native/issues/2176) वहाँ एक scrollResponderZoomTo समारोह है कि इस्तेमाल किया जा सकता है, लेकिन जब मैं इसे इस्तेमाल करने की कोशिश, ऐसा लगता है कि कोई बात नहीं मान मैं इसे देना यह ज़ूम के अनुसार बहुत दूर और दूर केंद्र बाहर।

एफ 8 नमूना ऐप में ज़ूम करने योग्य छवि मॉड्यूल (https://github.com/fbsamples/f8app/blob/b5df451259897d1838933f01ad4596784325c2ad/js/tabs/maps/ZoomableImage.js) है जो छवि को स्क्रीन फिट करने के लिए Image.resizeMode.contain शैली का उपयोग करता है, लेकिन यह छवि की गुणवत्ता खो देता है, इसलिए जब आप ज़ूम इन करते हैं तो यह धुंधला हो जाता है।

+1

मैं पुष्टि कर सकता हूं कि घोषणा पर ज़ूमस्केल संपत्ति को सेट करने का कोई प्रभाव नहीं पड़ता है। –

+1

scrollResponderZoomTo फ़ंक्शन "मेरे द्वारा दिए गए मूल्यों से कोई फर्क नहीं पड़ता कि यह बहुत दूर और दूर केंद्र ज़ूम करता है" मेरे मामले में भी व्यवहार करता है। –

+0

शेन, मुझे लगता है कि आप फेसबुक पर एक इंजीनियर के रूप में सूचीबद्ध हैं? क्या यह करने के लिए जाने के लिए सही तरीके से आपकी आंतरिक प्रतिक्रिया मूल टीम/समूह/मेलिंग-सूची पूछना संभव है? (और यदि आपने किया, तो मैं इसे प्यार करता हूं अगर आप यहां जवाब साझा कर सकते हैं, क्योंकि मेरे पास एक ही समस्या/ब्याज है!) –

उत्तर

4

इस तरह से आप यह क्या करने का इरादा है, लेकिन एक संभव समाधान नहीं हो सकता है:

आप कर सकते हैं उपकरणों ऊंचाई और चौड़ाई (var {height, width} = Dimensions.get('window')) मिलता है और आप अपनी छवि का आकार पता है, ताकि आप आसानी से गणना कर सकते हैं की जरूरत है चौड़ाई और ऊंचाई, चलिए उन्हें var neededWidth, neededHeight; कहते हैं। फिर आप ज़ूम की गणना कर सकते हैं जिसमें आप ज़ूम आउट करना चाहते हैं: var zoom = Math.min(height/neededHeight, width/neededWidth);

जगह में इन मूल्यों के साथ

, आप अपने componentWillMount में ज़ूम के लिए एक Animated मूल्य निर्धारित कर सकते हैं, zoom इस तरह से 1 से शुरू न खत्म होने वाली:

Animated.timing(
    this.state.animatedZoom, 
    {toValue: zoom} 
).start(); 

निर्माता इस प्रकार दिखाई देगा:

constructor(props) { 
    super(props); 
    this.state = { 
    animatedZoom: new Animated.Value(1), 
    }; 
} 

समारोह प्रस्तुत करना इस प्रकार दिखाई देगा (संदर्भ को बदलने के लिए here पाया जा सकता है):

<ScrollView 
    style={{width: 500, height: 1000, transform: [{ scale: this.state.animatedZoom }]}} 
> 
    <View style={{width: 2000, height: 5000}}> 
    <Image style={{width: 2000, height: 2000}} source={.....}/> 
    <Image style={{width: 2000, height: 3000}} source={.....}/> 
    </View> 
</ScrollView> 
+0

तो कुछ भी दिखाने के लिए ज़ूम आउट-आउट करना सब कुछ एक बार एक ट्रांसफॉर्म स्केल का उपयोग कर सकता है, जैसा कि आपने कहा था। हालांकि, प्रश्नकर्ता और मैं (जो बक्षीस स्वयंसेवी कर रहे हैं) 'स्क्रॉलव्यू' की ज़ूम-इन-एंड-आउट कार्यक्षमता (जो आईओएस पर समर्थित है) का उपयोग करना चाहते हैं, और इसलिए 'ज़ूमस्केले' (या कुछ ऐसा करना चाहते हैं इसे 'scrollResponderZoomTo'' की तरह सेट करता है, और अच्छी तरह से खेलता है। दुर्भाग्य से, AFAICT एक ट्रांसफॉर्म स्केल देशी 'ज़ूमस्केले' का उपयोग नहीं करता है, और इसलिए चुटकी-टू-ज़ूम और इसी तरह के साथ अच्छी तरह से खेल नहीं पाएगा। (शायद मैं इस धारणा पर गलत हूं?) –

+0

यह सही है। मैं सिर्फ एक वैकल्पिक समाधान दिखाना चाहता था, स्क्रॉल व्यू से बंधे नहीं। जैसा कि पूछताछकर्ता ने स्क्रॉलव्यू ज़ूम विकल्प का सही तरीके से काम नहीं किया, मैंने सोचा कि ऐसा सामान्य समाधान का उपयोग करना बेहतर हो सकता है। जैसा कि आप चुटकी-टू-ज़ूम का उल्लेख करते हैं: आप इसे अतिथि प्रतिक्रिया प्रतिक्रिया प्रणाली के साथ कार्यान्वित कर सकते हैं। –

+0

@ माइकलैम्बर्ट ने आपको पता लगाया कि आपने ऊपर वर्णित क्या किया है? मैं ज़ूम स्केल के रूप में संघर्ष नहीं कर रहा हूं क्योंकि मुझे कोई प्रभाव नहीं पड़ता है और मुझे वास्तव में कोई उपयोगी संसाधन नहीं मिल रहा है। – Martin

संबंधित मुद्दे