2013-01-03 31 views
15

में मिश्रण मोड के साथ UIViews को ढेर करना मेरे पास दो अलग UIImageViews हैं। मैं नीचे UIImageView के साथ स्क्रीन मिश्रण मोड का उपयोग करने में शीर्ष UIImageView मिश्रण बनाना चाहता हूं।आईओएस

मुझे CALayer की संपत्ति पता है: compositingFilter और मुझे पता है कि यह आईओएस में काम नहीं करता है। मैंने समाधान के लिए बहुत कुछ खोजा है, और मैंने पाया है कि किसी को UIView उप-वर्ग कैसे करना चाहिए और drawRect ओवरराइड करना चाहिए।

मैंने संदर्भ को drawRect में स्क्रीन मिश्रण मोड में सेट करने का प्रयास किया है, हालांकि यह अभी भी छवियों में से प्रत्येक को सामान्य रूप से खींचता है। शायद मैं कुछ गलत कर रहा हूं, या दृष्टिकोण अलग होना चाहिए। शायद इसे प्राप्त करने के लिए मुझे ओपनजीएल या कैलियर की आवश्यकता है। क्या कोई सहायता कर सकता है?

+0

अपना कोड पोस्ट करें। इसके अलावा, आपको एक ही दृश्य में दोनों छवियों को आकर्षित करना होगा; आप एक दृश्य को किसी अन्य दृश्य की सामग्री के साथ मिश्रित नहीं कर सकते हैं। –

+0

@ कुर्ट्रेविस मुझे पता है कि मैं स्क्रीन का उपयोग कर एक यूआईवीव में दो छवियां खींच सकता हूं, जो ड्रॉरेक्ट में मूल ड्राइंग है। मुझे विचारों के बीच ऐसा करने की ज़रूरत थी। यदि यह अभी के लिए अस्तित्व में नहीं है, तो इसे उत्तर के रूप में पोस्ट करें, ताकि मैं प्रश्न बंद कर सकूं। –

उत्तर

17

दुर्भाग्य से आईओएस पर UIViews के बीच एक गैर-मिश्रित मिश्रण करने का कोई तरीका नहीं है। UIKit कार्यक्षमता प्रदान नहीं करता है, और आपने पहले ही ध्यान दिया है, कैलियर इसे भी नहीं कर सकता है।

सामान्य रूप से, कार्यान्वयन - UIView में ड्राव्रेट आपकी सहायता नहीं करेगा। आप एक खाली बिटमैप में आ रहे हैं - इसमें इसके पीछे के विचारों के बिट्स शामिल नहीं हैं, क्योंकि वे किसी भी समय बदल सकते हैं (कोई भी दृश्य या परत एनिमेटेड हो सकती है)। सीए मूल रूप से मानता है कि परतों की सामग्री एक दूसरे से स्वतंत्र होना चाहिए।

आप कोशिश, अपने -drawRect:

  1. में एक छवि संदर्भ
  2. कब्जा बनाने के आपके विचार के तहत दृश्यों में से प्रत्येक
  3. के लिए -[CALayer renderInContext:] का उपयोग कर छवि संदर्भ
  4. ड्रा से एक छवि बना सकते हैं उस छवि को आपके दृश्य में
  5. मिश्रण मोड सेट करें और उस
  6. के शीर्ष पर खींचे

लेकिन यह धीमा और नाजुक होगा, और यदि आप किसी भी विचार को एनिमेट करते हैं तो काम नहीं करेंगे। मैं इसकी सिफारिश नहीं करता।

यदि आपको वास्तव में ऐसा करने की ज़रूरत है, तो आपको ओपनजीएल, where you've got more freedom के साथ प्रस्तुत करने के लिए अपना पूरा दृश्य स्विच करना होगा।

+1

क्या दृश्य में ओपनजीएल दृश्य जोड़ने का कोई तरीका होगा जिससे आप इस पर समग्र सामग्री को अनुमति दे सकें? या शायद आप ऑफस्क्रीन प्रस्तुत कर सकते हैं, इसे एक बनावट के रूप में कैप्चर कर सकते हैं, और फिर अपना दृश्य खींचने के लिए ओपनजीएल का उपयोग कर सकते हैं? – nielsbot

+0

UIViews के ऑफस्क्रीन प्रतिपादन को '- [CALAYer renderInContext:]' का उपयोग करना होगा जैसा मैंने वर्णन किया था। लेकिन हां, फिर आप इसे अपने ओपनजीएल संदर्भ में खींच सकते हैं, फिर उस पर सामान मिलाएं। नुकसान की वही सूची। –

+1

रुचि का हो सकता है: http://stackoverflow.com/questions/3410350/mixing-opengl-and-uikit – nielsbot

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

  • कोई संबंधित समस्या नहीं^_^