the documentation के अनुसार, यह CATextLayer अंदर फ़ॉन्ट समरेखण सक्षम करने के लिए संभव है:कैसे CATextLayer अपने पाठ को सुचारू बनाने के लिए?
@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;
जो काम नहीं करता:
Text 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.
यहाँ कैसे मैं इस वाक्य समझते हैं। पाठ उप-उपसर्ग एंटी-एलियासिंग का उपयोग करके खींचा नहीं जाता है।
आप पाठ परत की पृष्ठभूमि का रंग की स्थापना की कोशिश की है पर काम कर समाधान नहीं मिला? '[ब्लैकटेक्स्ट सेटबैकग्राउंड रंग: [एनएससीओलर व्हाइटकॉलर]।CGColor] ' –
@robmayoff मैं मानता हूं कि मैं पृष्ठभूमि रंग को सफेद रंग में सेट करने का प्रयास करना भूल गया हूं, लेकिन यह काम नहीं करता है, यानी यह गैर उप-पिक्सेल ए है। – alecail
मैं इस समय अपने आप से काम कर रहा हूं। ऊपर दिए गए कोड के साथ कम से कम एक समस्या यह है कि आप ब्लैकटेक्स्ट परत को अपने आप में रास्टरराइज करने के लिए कह रहे हैं, जो मदद नहीं करेगा। जब आप इसे प्रस्तुत करते हैं ('setShouldRasterize:' सेट करके इसे प्रस्तुत करने के लिए आपको अपनी सुपर परतों को रास्टराइज़ करने के लिए एक सुपर लेयर बताने की आवश्यकता होती है। दस्तावेजों के उस बिट के बारे में मेरी पढ़ाई से पता चलता है कि यदि आप यह करते हैं (सुपर लेयर पर) उप -CATextLayer विरोधी परत के साथ सुपर परत में rasterised किया जाएगा। मैं बाद में परीक्षण करूँगा, जब तक कि मैं एक और दृष्टिकोण नहीं मिलता। – Benjohn