আমি CALayer
একটি যুক্ত দিয়ে একটি তৈরি করেছি CATextLayer
এবং পাঠ্যটি ঝাপসা হয়ে আসে। দস্তাবেজে, তারা "সাব-পিক্সেল অ্যান্টিয়ালাইজিং" সম্পর্কে কথা বলছেন, তবে এটি আমার কাছে খুব বেশি বোঝায় না। যে কারও কাছে একটি কোড স্নিপেট রয়েছে যা CATextLayer
কিছুটা টেক্সট দিয়ে স্পষ্ট করে তোলে ?
অ্যাপলের ডকুমেন্টেশন থেকে লেখাটি এখানে:
দ্রষ্টব্য: পাঠ্য রেন্ডার করার সময় CATextLayer সাব-পিক্সেল অ্যান্টিয়ালাইজিং অক্ষম করে। পাঠ্য কেবলমাত্র সাব-পিক্সেল অ্যান্টিঅ্যালিয়াসিং ব্যবহার করে আঁকতে পারে যখন এটি একটি রাস্তাকারযুক্ত একই সময়ে কোনও বিদ্যমান অস্বচ্ছ ব্যাকগ্রাউন্ডে মিশ্রিত করা হবে। পাঠ্য পিক্সেলগুলিতে বুনন করার জন্য ব্যাকগ্রাউন্ড পিক্সেল রাখার আগে আলাদাভাবে ইমেজ বা কোনও স্তরের মধ্যে উপ-পিক্সেল-অ্যান্টিঅ্যালিয়াসেড পাঠ্য আঁকার কোনও উপায় নেই। স্তরের অস্বচ্ছতা সম্পত্তিটি YES এ সেট করা রেন্ডারিং মোডটি পরিবর্তন করে না।
দ্বিতীয় বাক্যটি বোঝায় যে composites
এটি একটি existing opaque background at the same time that it's rasterized.
দুর্দান্ত রূপে লেখা থাকলে একজন ভাল চেহারা পেতে পারে তবে আমি কীভাবে এটি সংমিশ্রণ করব এবং কীভাবে আপনি এটি একটি অস্বচ্ছ ব্যাকগ্রাউন্ড দেবেন এবং আপনি কীভাবে এটিকে রাস্টারাইজ করবেন?
কিওস্ক মেনুর উদাহরণ হিসাবে তারা যে কোডটি ব্যবহার করে তা হ'ল: (এটি ওএস এক্স, আইওএস নয়, তবে আমি ধরে নিলাম এটি কার্যকর হয়েছে!)
NSInteger i;
for (i=0;i<[names count];i++) {
CATextLayer *menuItemLayer=[CATextLayer layer];
menuItemLayer.string=[self.names objectAtIndex:i];
menuItemLayer.font=@"Lucida-Grande";
menuItemLayer.fontSize=fontSize;
menuItemLayer.foregroundColor=whiteColor;
[menuItemLayer addConstraint:[CAConstraint
constraintWithAttribute:kCAConstraintMaxY
relativeTo:@"superlayer"
attribute:kCAConstraintMaxY
offset:-(i*height+spacing+initialOffset)]];
[menuItemLayer addConstraint:[CAConstraint
constraintWithAttribute:kCAConstraintMidX
relativeTo:@"superlayer"
attribute:kCAConstraintMidX]];
[self.menuLayer addSublayer:menuItemLayer];
} // end of for loop
ধন্যবাদ!
সম্পাদনা: আমি যে কোডটি ব্যবহার করেছি তা যুক্ত করার ফলে ফলশ্রুতিযুক্ত লেখার ফলস্বরূপ। এটি যুক্ত সম্পর্কিত প্রশ্ন থেকে আমি UILabel
বরং একটি যুক্ত করার পরিবর্তে CATextLayer
একটি কালো বক্স পাওয়ার বিষয়ে পোস্ট করেছি । http://stackoverflow.com/questions/3818676/adding-a-uilabels-layer-to-a-calayer-and-it-just-shows-black-box
CATextLayer* upperOperator = [[CATextLayer alloc] init];
CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB();
CGFloat components1[4] = {1.0, 1.0, 1.0, 1.0};
CGColorRef almostWhite = CGColorCreate(space,components1);
CGFloat components2[4] = {0.0, 0.0, 0.0, 1.0};
CGColorRef almostBlack = CGColorCreate(space,components2);
CGColorSpaceRelease(space);
upperOperator.string = [NSString stringWithFormat:@"13"];
upperOperator.bounds = CGRectMake(0, 0, 100, 50);
upperOperator.foregroundColor = almostBlack;
upperOperator.backgroundColor = almostWhite;
upperOperator.position = CGPointMake(50.0, 25.0);
upperOperator.font = @"Helvetica-Bold";
upperOperator.fontSize = 48.0f;
upperOperator.borderColor = [UIColor redColor].CGColor;
upperOperator.borderWidth = 1;
upperOperator.alignmentMode = kCAAlignmentCenter;
[card addSublayer:upperOperator];
[upperOperator release];
CGColorRelease(almostWhite);
CGColorRelease(almostBlack);
সম্পাদনা 2: এটি কীভাবে সমাধান হয়েছে তার নীচে আমার উত্তর দেখুন। sbg।