আমি উত্তরটি ব্যবহার করেছিলাম কীভাবে আমি আইফোনে একটি বৃত্তাকার কোণযুক্ত ইউআইএলবেল তৈরি করব? এবং আইফোনটিতে স্বচ্ছতার সাথে একটি বৃত্তাকার রেক্ট ভিউ কীভাবে কোড থেকে আসে ?এই কোড করতে।
তখন আমি বুঝতে পেরেছি যে আমি ভুল প্রশ্নের উত্তর দিয়েছি (ইউআইআইজেজের পরিবর্তে গোলাকার ইউআইএলবেল দিয়েছি) সুতরাং আমি এই কোডটি এটি পরিবর্তন করতে ব্যবহার করেছি:
http://discussions.apple.com/thread.jspa?threadID=1683876
ভিউ টেম্পলেট দিয়ে একটি আইফোন প্রকল্প তৈরি করুন। ভিউ কন্ট্রোলারে, এটি যুক্ত করুন:
- (void)viewDidLoad
{
CGRect rect = CGRectMake(10, 10, 200, 100);
MyView *myView = [[MyView alloc] initWithFrame:rect];
[self.view addSubview:myView];
[super viewDidLoad];
}
MyView
কেবল একটি UIImageView
সাবক্লাস:
@interface MyView : UIImageView
{
}
আমি এর আগে গ্রাফিক্স প্রসঙ্গটি কখনও ব্যবহার করতাম না, তবে আমি এই কোডটি একসাথে হোবল করতে সক্ষম হয়েছি। এটি দুটি কোণে কোডটি অনুপস্থিত। আপনি যদি কোডটি পড়ে থাকেন তবে দেখতে পাবেন যে আমি কীভাবে এটি প্রয়োগ করেছি (কিছু CGContextAddArc
কল মুছে ফেলা এবং কোডের কিছু ব্যাসার্ধের মান মুছে ফেলাতে all যে অংশগুলি আপনার প্রয়োজন নেই এমন কোণ তৈরি করে। নোট করুন যে আপনি চাইলে খুব বেশি 2 বা 3 টি বৃত্তাকার কোণ দিয়ে আয়তক্ষেত্র তৈরি করতে পারেন।
কোডটি নিখুঁত নয়, তবে আমি নিশ্চিত আপনি এটি কিছুটা পরিষ্কার করতে পারবেন।
static void addRoundedRectToPath(CGContextRef context, CGRect rect, float radius, int roundedCornerPosition)
{
// all corners rounded
// CGContextMoveToPoint(context, rect.origin.x, rect.origin.y + radius);
// CGContextAddLineToPoint(context, rect.origin.x, rect.origin.y + rect.size.height - radius);
// CGContextAddArc(context, rect.origin.x + radius, rect.origin.y + rect.size.height - radius,
// radius, M_PI / 4, M_PI / 2, 1);
// CGContextAddLineToPoint(context, rect.origin.x + rect.size.width - radius,
// rect.origin.y + rect.size.height);
// CGContextAddArc(context, rect.origin.x + rect.size.width - radius,
// rect.origin.y + rect.size.height - radius, radius, M_PI / 2, 0.0f, 1);
// CGContextAddLineToPoint(context, rect.origin.x + rect.size.width, rect.origin.y + radius);
// CGContextAddArc(context, rect.origin.x + rect.size.width - radius, rect.origin.y + radius,
// radius, 0.0f, -M_PI / 2, 1);
// CGContextAddLineToPoint(context, rect.origin.x + radius, rect.origin.y);
// CGContextAddArc(context, rect.origin.x + radius, rect.origin.y + radius, radius,
// -M_PI / 2, M_PI, 1);
// top left
if (roundedCornerPosition == 1) {
CGContextMoveToPoint(context, rect.origin.x, rect.origin.y + radius);
CGContextAddLineToPoint(context, rect.origin.x, rect.origin.y + rect.size.height - radius);
CGContextAddArc(context, rect.origin.x + radius, rect.origin.y + rect.size.height - radius,
radius, M_PI / 4, M_PI / 2, 1);
CGContextAddLineToPoint(context, rect.origin.x + rect.size.width,
rect.origin.y + rect.size.height);
CGContextAddLineToPoint(context, rect.origin.x + rect.size.width, rect.origin.y);
CGContextAddLineToPoint(context, rect.origin.x, rect.origin.y);
}
// bottom left
if (roundedCornerPosition == 2) {
CGContextMoveToPoint(context, rect.origin.x, rect.origin.y);
CGContextAddLineToPoint(context, rect.origin.x, rect.origin.y + rect.size.height);
CGContextAddLineToPoint(context, rect.origin.x + rect.size.width,
rect.origin.y + rect.size.height);
CGContextAddLineToPoint(context, rect.origin.x + rect.size.width, rect.origin.y);
CGContextAddLineToPoint(context, rect.origin.x + radius, rect.origin.y);
CGContextAddArc(context, rect.origin.x + radius, rect.origin.y + radius, radius,
-M_PI / 2, M_PI, 1);
}
// add the other corners here
CGContextClosePath(context);
CGContextRestoreGState(context);
}
-(UIImage *)setImage
{
UIImage *img = [UIImage imageNamed:@"my_image.png"];
int w = img.size.width;
int h = img.size.height;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst);
CGContextBeginPath(context);
CGRect rect = CGRectMake(0, 0, w, h);
addRoundedRectToPath(context, rect, 50, 1);
CGContextClosePath(context);
CGContextClip(context);
CGContextDrawImage(context, rect, img.CGImage);
CGImageRef imageMasked = CGBitmapContextCreateImage(context);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
[img release];
return [UIImage imageWithCGImage:imageMasked];
}
Alt পাঠ্য http://nevan.net/skitch/skitched-20100224-092237.png
ভুলে যাবেন না যে এটি কাজ করার জন্য আপনাকে কোয়ার্টজোর কাঠামোটি পেতে হবে।