আমার একটি সাধারণ ভিউ (ছবির বাম দিক) আছে এবং এই ভিউটিতে আমার একধরণের ওভারলে (ছবির ডান দিক) তৈরি করতে হবে। এই ওভারলেটির কিছুটা অস্বচ্ছতা থাকা উচিত, সুতরাং দৃশ্যটি বেলো এটি এখনও আংশিকভাবে দৃশ্যমান। সর্বাধিক গুরুত্বপূর্ণ এই ওভারলেটির মাঝখানে একটি বৃত্তাকার ছিদ্র থাকা উচিত যাতে এটি দৃশ্যটির কেন্দ্রস্থলে আবৃত হয় না (চিত্রের নমুনা দেখুন)।
আমি সহজেই এর মতো একটি বৃত্ত তৈরি করতে পারি:
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
।