मेरे पास UIScrollView
के अंदर एक ग्राफ खींचा जा रहा है। CATiledLayer
के कस्टम उप-वर्ग का उपयोग करके इसकी परत के रूप में यह एक बड़ा UIView
है।UIScrollView ज़ूम के बाद मैं रीसेट कैसे करूं?
जब मैं UIScrollView
में ज़ूम इन और आउट करता हूं, तो मैं ग्राफ को viewForZoomingInScrollView
से ग्राफ़ वापस करने पर गतिशील रूप से आकार बदलना चाहता हूं। हालांकि, ग्राफ़ नए ज़ूम स्तर पर खुद को फिर से चलाता है, और मैं ट्रांसफॉर्म स्केल को 1x1 पर रीसेट करना चाहता हूं ताकि अगली बार उपयोगकर्ता ज़ूम कर सके, ट्रांसफॉर्म वर्तमान दृश्य से शुरू होता है। अगर मैं ट्रांसफॉर्म को scrollViewDidEndZooming
में पहचान में रीसेट कर देता हूं, तो यह सिम्युलेटर में काम करता है, लेकिन डिवाइस पर EXC_BAD_ACCSES
फेंकता है।
यह सिम्युलेटर पर पूरी तरह से समस्या को हल नहीं करता है, क्योंकि अगली बार जब उपयोगकर्ता ज़ूम करता है, तो ट्रांसफॉर्म स्वयं को जो भी ज़ूम स्तर पर रीसेट करता है, और ऐसा लगता है, अगर मैं 2x पर ज़ूम किया गया था , उदाहरण के लिए, यह अचानक 4x पर है। जब मैं ज़ूम खत्म करता हूं, तो यह सही पैमाने पर समाप्त होता है, लेकिन ज़ूमिंग का वास्तविक कार्य खराब दिखता है।
तो सबसे पहले: ज़ूमिंग के बाद ग्राफ को 1x1 के मानक पैमाने पर फिर से चलाने की अनुमति कैसे दे सकता हूं, और मेरे पास एक चिकनी ज़ूम कैसे हो सकता है?
संपादित करें: नई खोजों त्रुटि हो "[CALayer retainCount]: message sent to deallocated instance
"
मैं कभी नहीं किसी भी परतों अपने आप deallocating कर रहा हूँ लगता है। इससे पहले, मैं किसी भी विचार या कुछ भी हटा नहीं रहा था। यह त्रुटि ज़ूम पर और घूमने पर भी फेंक दी गई थी। अगर मैं रोटेशन से पहले ऑब्जेक्ट को हटा देता हूं और बाद में इसे फिर से जोड़ता हूं, तो यह अपवाद फेंक नहीं देता है। यह ज़ूम करने का विकल्प नहीं है।
आपको थोड़ा और विशिष्ट होना पड़ सकता है। कौन सी त्रुटियां? मैं लगभग एक आवेदन में इस तरह कोड का उपयोग करता हूं, और यह ठीक काम करता है। –
सामग्री दृश्य गायब क्यों रहता है? – domlao
आपने अधिक जानकारी प्रदान नहीं की है, लेकिन यदि आप पदानुक्रम से सामग्री दृश्य को मैन्युअल रूप से छिपा रहे या हटा नहीं रहे हैं, तो मेरा अनुमान है कि यह GPU द्वारा समर्थित बनावट आकार से बड़ा हो रहा है। यदि दृश्य 2048 पिक्सेल से बड़ा या लंबा हो जाता है, तो इसे अब आईफोन और आईफोन 3 जी पर प्रस्तुत नहीं किया जा सकता है (मैं 3 जी एस के लिए बात नहीं कर सकता)। –