2012-02-16 16 views
5

में स्क्रॉल किए गए ऑफ़स्क्रीन के दौरान कैलियर रास्टरराइजेशन खो देता है मेरे पास कुछ अच्छे कस्टम UIViews हैं जो कुछ काफी विस्तृत मास्क और पारदर्शिता के लिए कैलियर का उपयोग करते हैं। मुझे यह समझने में थोड़ी देर लग गई कि इसे आसानी से कैसे चलाया जाए, लेकिन मैंने पाया कि एक कंटेनर UIView में प्रासंगिक ऑब्जेक्ट्स लपेटकर और कंटेनर की परत सेट करना। YOLD को shasterRasterize, लेकिन सभी निहित दृश्यों की उस संपत्ति को छोड़ दें , यह बटररी चिकनी चलाएगा इससे कोई फर्क नहीं पड़ता कि आपका मिश्रण कितना विस्तृत हो सकता है।UIScrollView

यह इस तरह मूल रूप से है:

UIScrollView


कंटेनर देखें (layer.shouldRasterize = हाँ)

  • बच्चे (layer.shouldRasterize = नहीं)
    • childOfChild (layer.shouldRasterize = NO)
  • बच्चे (layer.shouldRasterize = नहीं)
  • बच्चे (layer.shouldRasterize = सं)

कंटेनर ...

कंटेनर ... (और इसी तरह)


मूल रूप से, कंटेनर रास्टरराइज होने पर एक बड़ी ब्लॉक छवि के रूप में समाप्त होता है, जो रास्टरराइजेशन की मात्रा को कम करता है। हालांकि, इसने मेरे लिए एक नई समस्या बनाई है। यदि मेरे पास UIScrollView में कई कंटेनर हैं, जैसे ही कंटेनरों में से एक को स्क्रॉल किया जाता है, तो इसे कोरएनीमेशन प्रोफाइलर में "लाल" टैग किया जाता है, और इसलिए स्क्रीन पर वापस स्क्रॉल होने पर इसे फिर से प्रस्तुत किया जाना चाहिए। यह एक संक्षिप्त स्टटर का कारण बनता है। मुझे समझ में नहीं आता कि कंटेनर की परत को फिर से रास्टराइज करना क्यों है। क्या कोई इसे समझा सकता है या शायद कामकाज प्रदान कर सकता है? धन्यवाद।

उत्तर

0

आप अपनी परत की एक छवि को सहेज सकते हैं (माना जाता है कि यह एक बार प्रस्तुत नहीं होगा) और फिर बस स्टेटिक यूआईएममेज के बीच स्क्रॉल करें।

How to capture UIView to UIImage without loss of quality on retina display

:

UIImage from CALayer - iPhone SDK

या एक UIView कोशिश टॉमी के समाधान से एक UIImage बनाने के लिए:

टोड Yandell के समाधान की कोशिश एक CALayer से एक UIImage बनाने के लिए