मेरे पास एक साधारण दृश्य है (चित्र के बाईं ओर) और मुझे इस दृश्य में किसी प्रकार का ओवरले (चित्र के दाईं ओर) बनाने की आवश्यकता है। इस ओवरले में कुछ अपारदर्शिता होनी चाहिए, इसलिए यह देखने वाला बोला अभी भी आंशिक रूप से दिखाई दे रहा है। सबसे महत्वपूर्ण बात यह है कि इस ओवरले के बीच में एक गोलाकार छेद होना चाहिए ताकि यह दृश्य के केंद्र को ओवरले न करे (चित्र बाइल देखें)।
मैं आसानी से इस तरह एक सर्कल बना सकता हूं:
int radius = 20; //whatever
CAShapeLayer *circle = [CAShapeLayer layer];
circle.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0,radius,radius) cornerRadius:radius].CGPath;
circle.position = CGPointMake(CGRectGetMidX(view.frame)-radius,
CGRectGetMidY(view.frame)-radius);
circle.fillColor = [UIColor clearColor].CGColor;
और इस तरह एक "पूर्ण" आयताकार ओवरले:
CAShapeLayer *shadow = [CAShapeLayer layer];
shadow.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, view.bounds.size.width, view.bounds.size.height) cornerRadius:0].CGPath;
shadow.position = CGPointMake(0, 0);
shadow.fillColor = [UIColor grayColor].CGColor;
shadow.lineWidth = 0;
shadow.opacity = 0.5;
[view.layer addSublayer:shadow];
लेकिन मुझे नहीं पता कि मैं इन दोनों परतों को कैसे जोड़ सकता हूं ताकि वे मेरे मनचाहे प्रभाव पैदा करें। किसी को? मैं वास्तव में सब कुछ करने की कोशिश की है ... मदद के लिए बहुत बहुत धन्यवाद!
moveToPoint
गोल आयत जोड़ें। द्वारा की पेशकश की विधियों के लिए डॉक्स की जाँच करें UIBezierPath
।