2012-04-03 16 views
6

मैं के साथ प्रत्येक UILabel के लिए 155 चौड़ाई एक्स 155 ऊंचाई एक iPad ऐप्लिकेशन में 180 UILabels (UITableViewCells की subviews) है, और जब मैं स्क्रॉल हर एक, यूनिकोड पाठ (अरबी भाषा) का एक बड़ा मात्रा में होता है TableView नीचे यह 1 सेकंड तक लटकता है और फिर सामान्य रूप से स्क्रॉलिंग करता रहता है, यह उपयोगकर्ता द्वारा प्रत्येक स्क्रॉल प्रयास के साथ होता है और यह आईपीएडी 2 डिवाइस पर परीक्षण किया जाता है।यूनिकोड पाठ के साथ बहुत सारे UILabels

हालांकि, जब मैंने पाठ को अंग्रेजी भाषा (अंग्रेजी पाठ की बड़ी मात्रा) में बदल दिया, तो TableView लटका नहीं है और सामान्य रूप से स्क्रॉल करता है।

किसी को भी इस मुद्दे को यूनिकोड टेक्स्ट के साथ हल करने का विचार आया है?

अग्रिम में आपका बहुत बहुत धन्यवाद।

संपादित करें:

कोड यहाँ फिट करने के लिए है, इसलिए संक्षेप में, मैं इस तरह एक पाश के साथ प्रत्येक UILabel बनाने बड़ी है: cellForRowAtIndexPath विधि में [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];, तो इंटरफेस के अनुसार एक ही विधि में बाद में फ्रेम के साथ खेलते हैं अभिविन्यास, उसके बाद मैं प्रत्येक UILabel को इस तरह के सेल में जोड़ता हूं: [cell.contentView addSubView:myLabel];। प्रत्येक सेल में इनमें से 4 'UILabels' होते हैं, इसलिए मेरे पास कुल 45 कोशिकाएं हैं, कुछ भी नहीं, सीधे आगे और सरल कोड।

एक जांच कि आपके ऐप में लीक नहीं है:

+3

मुझे सीधा जवाब नहीं पता है लेकिन किसी भी मामले में आपके ऐप को अनुकूलित करने का प्रयास करें कि यह संभवतः जितनी जल्दी हो सके 'UITableViewCells' के सबव्यूज़ की सेवा करेगा क्योंकि एक और संभावित खतरा है। यदि उपयोगकर्ता इतनी जल्दी स्क्रॉल करता है कि उसकी सामग्री को प्रस्तुत करने से पहले सेल स्क्रॉल हो जाता है, तो आपका पूरा 'UITableView' खाली हो जाएगा और पूरे दृश्य को पुनः लोड किए बिना इसे पुनर्प्राप्त करने का कोई तरीका नहीं है। – MrTJ

+1

मुझे लगता है कि समस्या यूनिकोड टेक्स्ट के आकार के भीतर है, फिर भी लेबल को – JAHelia

+8

में पाठ निर्दिष्ट करने से पहले इस आकार को कम करने का कोई तरीका नहीं मिल सका क्या आपको लगता है कि विशाल ग्रंथों से लोड 180 लेबल के साथ एक दृश्य बनाना सर्वोत्तम है उत्तरदायी और uncluttered स्मार्टफोन ऐप डिजाइन में दृष्टिकोण? – serb

उत्तर

0

ऐसे कई तरीके आप अपने कोड का अनुकूलन कर सकते हैं। लेबल की उचित रिलीज। कोशिकाओं की पुन: प्रयोज्यता का उपयोग करें। मैं नहीं जानता कि आप इसका उपयोग कर रहे हैं या नहीं। हर बार जब आप अपनी cellForRowAtIndexPath प्रतिनिधि विधि को स्क्रॉल करते हैं, तब से कॉल किया जाता है।

In case you dont know about reusability try this link.

+0

मैंने इस मामले में किसी भी लाभ के बिना dequeueReusableCell का उपयोग किया है – JAHelia

+0

स्मृति की आवंटन वास्तविक पुनर्भुगतान से बहुत तेज होगी। – Sulthan

+0

क्या आप मुझे अपना कोड दिखा सकते हैं। चूंकि कई छवियों को लोड करने के बाद कुछ हद तक अनुकूलित किया जा सकता है, इसलिए हम लेबल में – DivineDesert

1

यूनिकोड के उपयोग यहाँ समस्या नहीं होनी चाहिए, क्योंकि यह किसी भी अन्य पाठ के समान गति पर प्रस्तुत करना होगा।

संभवतः कुछ ऐसे मुद्दे हैं जो आपके कोड को धीमा कर रहे हैं। सबसे पहले, आपको UITableView के मूल सेल पुन: उपयोग का उपयोग करने का प्रयास करना चाहिए, UITableViewCell में लेबल्स जोड़ें और फिर उन्हें हटाएं WithResusableIdentifier उन्हें। जब आप उस विधि को शून्य करते हैं तो आपको केवल अपने लेबल उत्पन्न करना चाहिए और आपको एक नया UITableViewCell बनाना होगा (यदि आप इसे पहले से करते हैं तो यह मूल प्रश्न से अस्पष्ट है)।

यह सुनिश्चित करने के लिए आप एक और चीज कर सकते हैं कि आपके कई विचार कंपोजिटिंग को तेज करने के लिए अपारदर्शी हैं। उपकरण में यह आसान बनाने के लिए गैर-अपारदर्शी विचारों को टेंट करने का विकल्प शामिल है।

+0

dequeueWithResusableIdentifier का उपयोग किया गया है लेकिन बिना किसी चिह्नित अंतर के, और जैसा कि मैंने प्रश्न में उल्लेख किया है तालिका तालिका सामान्य रूप से स्क्रॉल करता है जब टेक्स्ट अंग्रेजी होता है, और असामान्य रूप से जब टेक्स्ट यूनिकोड होता है – JAHelia

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