2012-03-07 14 views
12

के साथ एक मुखौटा जोड़ना मुझे लगता है कि कैलियर के माध्यम से एक मुखौटा जोड़ना मुश्किल हो रहा है। मैं बस UIImageView मुखौटा करने की कोशिश कर रहा हूँ। यहाँ मेरी कोड है: (? नकाब को यह सही तरीका है)कैलियर

CALayer *maskLayer = [CALayer layer]; 
UIImage *mask = [UIImage imageNamed:@"mask.png"]; 
maskLayer.contents = mask; 

UIImageView *viewToMask = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)]; 
viewToMask.image = [UIImage imageNamed:@"picture.png"]; 
viewToMask.layer.mask = maskLayer; 
[self.view addSubview:viewToMask]; 

Mask.png काला है एक पारदर्शी चक्र के साथ इसके माध्यम से मुक्का मारा। मुझे यकीन नहीं है कि यह असफल रहा है, शायद maskLayer.contents पर यह CGImageRef होने के बाद से मुझे त्रुटियां मिलती हैं, जब मैं इसे mask.CGImage, या स्थानीय चर CGImageRef = mask.CGImage के माध्यम से सेट करता हूं। वैसे भी, जिस तरह से इसका सेट अब त्रुटियों को नहीं देता है, इसलिए मुझे उम्मीद है कि यह ठीक है।

क्या किसी को पता है कि क्या हो रहा है, या कैलियर के साथ मास्क को सही तरीके से कैसे सेट किया जाए? धन्यवाद

उत्तर

19

maskLayer.contents = (id)mask.CGImage; 

हाँ, कलाकारों बेकार की कोशिश करो, लेकिन यह आवश्यक है।


मुझे लगता है कि आप भी

maskLayer.bounds = (CGRect){CGPointZero, mask.size}; 
+0

अरे, पर आपकी मदद के लिए धन्यवाद मुखौटा फ्रेम निर्धारित करने की आवश्यकता मूल सवाल, मैं आपके सुझावों का पालन करने की कोशिश कर रहा था। किसी भी तरह, ऐसा लगता है कि यह चाल भी नहीं है। मुझे उस मामले के लिए कोई मुखौटा या मेरा विचार नहीं है। – user339946

+0

@ user339946: आपको शायद 'मास्कलेयर' की 'सीमा' को परिभाषित करने की आवश्यकता है। –

+1

फ्रेम मेरे लिए काम किया, सीमाएं नहीं थीं। –

13

इस कोशिश में कहने के लिए की आवश्यकता होगी:

CALayer *maskLayer = [CALayer layer]; 
UIImage *mask = [UIImage imageNamed:@"mask.png"]; 
maskLayer.contents = (id)mask.CGImage; 
// maskLayer.contentsGravity = kCAGravityCenter; 
maskLayer.frame = CGRectMake(0.0, 0.0,1024,768); 

UIImageView *viewToMask = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)]; 
viewToMask.image = [UIImage imageNamed:@"picture.png"]; 
viewToMask.layer.mask = maskLayer; 
[self.view addSubview:viewToMask]; 

आप भी

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