मैंने CALayer
एक जोड़ा के साथ बनाया है CATextLayer
और पाठ धुंधली बाहर आता है। डॉक्स में, वे "सब-पिक्सेल एंटीअलियासिंग" के बारे में बात करते हैं, लेकिन इसका मतलब मेरे लिए बहुत मायने नहीं रखता है। किसी के पास एक कोड स्निपेट है जो CATextLayer
स्पष्ट पाठ के साथ एक बनाता है?
यहाँ Apple के प्रलेखन से पाठ है:
नोट: 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);
EDIT 2: नीचे दिए गए मेरे जवाब को देखें कि यह कैसे हल हुआ। SBG।