मैं इस समस्या पर कुछ घंटों तक काम कर रहा हूं और एक समाधान है जो मुझे लगता है कि आप जो चाहते हैं वह करेंगे। सबसे पहले, जो भी आप फिट देखते हैं उसका उपयोग करके अपनी मास्किंग छवि बनाएं। ध्यान दें कि हमें केवल अल्फा मानों की आवश्यकता है, अन्य सभी रंगों को अनदेखा कर दिया जाएगा, इसलिए सुनिश्चित करें कि आपके द्वारा उपयोग की जाने वाली विधि अल्फा मानों का समर्थन करती है। इस उदाहरण में मैं एक .png फ़ाइल से लोड कर रहा हूं, लेकिन इसे .jpg फ़ाइलों के साथ आज़माएं क्योंकि उनके पास अल्फा मान नहीं हैं।
इसके बाद, एक नई परत बनाने इसकी सामग्री के लिए अपने मुखौटा प्रदान करेगा और आपके UIView की अपनी परत को यह नई परत निर्धारित करते हैं, तो जैसे: आप पाएँगे कि यह मास्क UIView और उसके सभी संलग्न subviews:
UIImage *_maskingImage = [UIImage imageNamed:@"mask"];
CALayer *_maskingLayer = [CALayer layer];
_maskingLayer.frame = theView.bounds;
[_maskingLayer setContents:(id)[_maskingImage CGImage]];
[theView.layer setMask:_maskingLayer];
ऐसा करने के साथ, आप जो भी चाहें उसे UIView का पृष्ठभूमि रंग सेट कर सकते हैं और मास्क का उपयोग रंगीन फ़िल्टर बनाने के लिए किया जाएगा।
संपादित करें: आईओएस 8 के रूप में आप अब अपने मास्क व्यू प्रॉपर्टी को एक और दृश्य सौंपकर एक दृश्य को मुखौटा कर सकते हैं। सामान्य नियम वही रहते हैं जिसमें मास्क व्यू की अल्फा परत का उपयोग उस दृश्य की अस्पष्टता को निर्धारित करने के लिए किया जाता है, जिस पर इसे लागू किया जाता है।
आपके उत्तर के लिए धन्यवाद। समस्या यह है कि मेरे पास केवल ग्रे स्केल वाली छवियां हैं (सभी बिंदुओं के लिए अल्फा == 1)। मैं ग्रे स्केल छवि को अल्फा छवि में परिवर्तित करना चाहता हूं। क्या तुम्हारे पास कोई विचार है? – subchap
अच्छा यह करने का सबसे अच्छा तरीका फ़ोटोशॉप जैसे छवि संपादन सूट में लेना और वहां रूपांतरण करना है। वैकल्पिक रूप से इसे एक नया छवि संदर्भ बनाकर प्रोग्रामेटिक रूप से करना होगा, फिर ग्रे घटक को पढ़ने वाली पुरानी छवि पर पिक्सेल-बाय-पिक्सेल के माध्यम से जाकर, और इसे अपने नए रंग में बदलने से पहले अपने नए रंग के लिए अल्फा घटक में परिवर्तित करना होगा ।यह श्रमिक और समय बर्बाद है, क्योंकि आप इसे एक पेंट पैकेज में कर कर कम प्रोसेसर समय का उपयोग करेंगे। – Ash
फ़ोटोशॉप में यह आसानी से किया जाता है: (1) एक नई परत बनाएं (2) काले रंग के साथ इसके एक हिस्से को भरें (3) इसे मास्क में अपनी ग्रेस्केल छवि के पीछे एक परत मुखौटा (4) दें। काला = पारदर्शी, सफेद = अपारदर्शी, पारदर्शिता की डिग्री अलग-अलग होती है। (5) परत मुखौटा लागू करें (परत पैनल में मास्क पर दायाँ क्लिक करें और 'परत मास्क लागू करें' पर क्लिक करें) (6) आपको आवश्यक परत के हिस्से को फसल करें। –