我做了CALayer一个添加CATextLayer,文字出来模糊.在文档中,他们谈论"亚像素抗锯齿",但这对我来说并不重要.任何人都有一个代码片段,CATextLayer使用一些明确的文本?
以下是Apple文档中的文字:
注意:CATextLayer在渲染文本时禁用子像素抗锯齿.只有在光栅化的同时将文本合成到现有的不透明背景中时,才能使用子像素抗锯齿来绘制文本.在将背景像素编织成文本像素之前,无法单独绘制子像素抗锯齿文本,无论是图像还是图层.将图层的opacity属性设置为YES不会更改渲染模式.
第二句话暗示一个人可以获得好看的文本,如果composites它变成一个existing opaque background at the same time that it's rasterized. 很好的,但我如何合成它,你如何给它一个不透明的背景,你如何光栅化它?
他们在Kiosk菜单示例中使用的代码是这样的:(它是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
Run Code Online (Sandbox Code Playgroud)
谢谢!
编辑:添加我实际使用的代码导致文本模糊.这是来自我发布的一个相关问题,即添加一个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, …Run Code Online (Sandbox Code Playgroud)