the documentation göre, CATextLayer içindeki yazı tipi düzeltmeyi etkinleştirmek mümkündür:CATextLayer metni nasıl pürüzsüz hale getirir?
@implementation CATextLayerWithFontSmoothing
-(id)init {
self=[super init];
if (self) {
CALayer * whiteBackground = [CALayer layer];
CATextLayer * blackText = [CATextLayer layer];
[whiteBackground setBounds:NSMakeRect(0, 0, 300, 300)];
[blackText setBounds:NSMakeRect(0, 0, 300, 300)];
[whiteBackground setBackgroundColor:[NSColor whiteColor].CGColor];
[blackText setForegroundColor:[NSColor blackColor].CGColor];
[blackText setString:@"CATextLayer"];
[blackText setShouldRasterize:YES];
[self addSublayer:whiteBackground];
[self addSublayer: blackText];
}
return self;
çalışmaz:
İşteText can only be drawn using sub-pixel antialiasing when it is composited into an existing opaque background at the same time that it's rasterized.
Ben bu cümleyi anlamaya nasıl. Metin subpixel kenar yumuşatma kullanılarak çizilmez.
üzerinde çalışan çözüm buldu? [blackText setBackgroundColor: [NSColor whiteColor].CGColor] ' –
@robmayoff Kabul ediyorum, arka plan rengini whiteColor olarak ayarlamayı denedim, ama işe yaramıyor, yani non-subpixel aa. – alecail
Şu anda bu konuda çalışıyorum. Yukarıdaki kodla ilgili en az bir sorun, blackText katmanının kendisine rasterleştirileceğini söylediğinizdir, bu da size yardımcı olmaz. Alt katmanlarını oluştururken alt katmanlarını (setShouldRasterize: 'ayarlayarak) rasterleştirmek için süper bir katman söylemelisiniz. Belgelerin birazını okumuş olursanız, bunu (süper katman üzerinde) -CATextLayer anti-alising ile süper katmana rasterleştirilecek. Başka bir yaklaşım bulamadıkça daha sonra test edeceğim. – Benjohn