ฉันมีมุมมองที่เรียบง่าย (ด้านซ้ายของภาพ) และฉันต้องการสร้างภาพซ้อนทับ (ด้านขวาของภาพ) ให้กับมุมมองนี้ ภาพซ้อนทับนี้ควรมีความทึบแสงดังนั้นการมองเห็นจึงยังคงมองเห็นได้บางส่วน ที่สำคัญที่สุดการวางซ้อนนี้ควรมีรูวงกลมตรงกลางเพื่อไม่ให้ซ้อนทับตรงกลางของมุมมอง (ดูภาพต่อไปนี้)
ฉันสามารถสร้างวงกลมได้ง่ายๆดังนี้:
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
ตรวจสอบเอกสารสำหรับวิธีการที่นำเสนอโดย