Как получить текст в CATextLayer, чтобы быть понятным

Я сделалCALayer с добавлениемCATextLayer и текст получается размытым. В документах они говорят о «субпиксельном сглаживании», но это мало что значит для меня. У любого есть фрагмент кода, который делаетCATextLayer с небольшим количеством текста, который понятен?

Вот текст из документации Apple:

Примечание: CATextLayer отключает субпиксельное сглаживание при рендеринге текста. Текст может быть нарисован только с использованием субпиксельного сглаживания, когда он скомпонован в существующий непрозрачный фон одновременно с растеризацией. Нет никакого способа нарисовать текст с сглаживанием субпикселей сам по себе, будь то изображение или слой, отдельно до появления фоновых пикселей, в которые будут вплетаться пиксели текста. Установка свойства непрозрачности слоя на YES не меняет режим рендеринга.

Второе предложение подразумевает, что можно получить хорошо выглядящий текст, еслиcomposites это вexisting opaque background at the same time that it's rasterized. Это здорово, но как мне скомбинировать его и как создать непрозрачный фон и как его растеризовать?

Код, который они используют в своем примере меню киоска, выглядит так: (Это OS X, а не iOS, но я предполагаю, что это работает!)

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.

Ответы на вопрос(7)

Ваш ответ на вопрос