ट्यूटोरियल इस पद्धति का उपयोग दो मापदंडों के साथ करता है: image
और maskImage
, इन्हें आपको विधि को कॉल करने पर सेट करना होगा। एक उदाहरण कॉल इस तरह दिख सकता है, यह मानते हुए कि विधि एक ही कक्षा में है और चित्र आपके बंडल में हैं:
नोट - आश्चर्यजनक रूप से छवियों का आकार समान नहीं है।
...
UIImage *image = [UIImage imageNamed:@"dogs.png"];
UIImage *mask = [UIImage imageNamed:@"mask.png"];
// result of the masking method
UIImage *maskedImage = [self maskImage:image withMask:mask];
...
- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {
CGImageRef maskRef = maskImage.CGImage;
CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
CGImageGetHeight(maskRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef), NULL, false);
CGImageRef maskedImageRef = CGImageCreateWithMask([image CGImage], mask);
UIImage *maskedImage = [UIImage imageWithCGImage:maskedImageRef];
CGImageRelease(mask);
CGImageRelease(maskedImageRef);
// returns new image with mask applied
return maskedImage;
}
आपके द्वारा अपना कोड प्रदान करने के बाद मैंने कुछ संख्याएँ संदर्भ के लिए टिप्पणियों के रूप में जोड़ दी हैं। आपके पास अभी भी दो विकल्प हैं। यह पूरी चीज एक विधि है, जिसे आप कहीं बुला रहे हैं। आपको इसके अंदर चित्र बनाने की आवश्यकता नहीं है: यह विधि की पुन: प्रयोज्य को शून्य कर देता है।
अपने कोड को काम करने के लिए। तरीकों सिर ( 1. ) को बदलें
- (UIImage *)maskImageMyImages {
तब में चर का नाम बदलने 2. करने के लिए
UIImage *maskImage = [UIImage imageNamed:@"mask.png"];
विधि आपकी नकाबपोश छवियों को वापस कर देगी इसलिए आपको इस विधि को किसी स्थान पर कॉल करना होगा। क्या आप हमें वह कोड दिखा सकते हैं जहाँ आप अपना तरीका बता रहे हैं?