2012-02-16 14 views
5

जैसा कि अन्य ने किया है, मैं एक कैलियर समर्थित दृश्य पर सभ्य दिखने वाला पाठ प्राप्त करने की कोशिश कर रहा हूं। मैंने पाया है कि सबसे प्रासंगिक धागा Faking Subpixel Antialiasing on Text with Core Animation है।ओपेक पृष्ठभूमि के साथ कैलियर में टेक्स्ट एंटीअलाइजिंग

उस पोस्ट की शुरुआत में, यह कहा गया है कि "अब, उन लोगों के लिए जो अपने टेक्स्ट के लिए अपारदर्शी पृष्ठभूमि सेट करने में सक्षम हैं (या तो सेटबैकग्राउंड कॉलर: कॉल या इंटरफ़ेस बिल्डर में समकक्ष सेटिंग), यह समस्या नहीं है एक समस्या का बहुत अधिक उपस्थित है। " हालांकि, जब मैंने आईबी में एक टेक्स्ट बॉक्स की पृष्ठभूमि सेट की है, और इसे पृष्ठभूमि खींच लिया है, और अपने सेल के साथ ऐसा ही करता है, तो मुझे अभी भी वही समस्या मिल रही है (परतों का उपयोग होने पर कोई एंटीअलाइजिंग नहीं)। ये एक एनएसबीक्स से संबंधित हैं जो इसकी पृष्ठभूमि भी खींचती है।

कोई विचार है कि मुझे क्या करना चाहिए कि मैं नहीं कर रहा हूं? धन्यवाद

उत्तर

3

यह सुनिश्चित नहीं है कि यह आपकी समस्या को हल करने में मदद करता है, लेकिन जब आप परत में कस्टम ड्राइंग करते हैं, तो आपको एक अपारदर्शी रंग के साथ CGContextFillRect() का उपयोग करना होगा और उसके बाद उप-प्रत्यय एंटीअलाइजिंग प्राप्त करने के लिए उस आय के शीर्ष पर स्ट्रिंग खींचनी होगी।

परत सेट करना। बैकग्राउंड रंग पर्याप्त अच्छा नहीं है, संभवत: परत। बैकग्राउंड रंग परत सामग्री को फिर से चित्रित किए बिना बदला जा सकता है।

+0

आप कैसे आप स्ट्रिंग ऐसी है कि वह खराब प्रस्तुत नहीं होती आकर्षित का एक उदाहरण है - मेरा प्रयास अच्छी तरह से प्रस्तुत नहीं किया था। – Sam

+0

@ सैम सुनिश्चित करें कि आप 'layer.contentsScale' को '[UIScreen mainScreen] .scale' पर सेट करें। –

+0

सुंदर। यह पूरी तरह से काम किया। मैं परत स्थापित कर रहा था। बैकग्राउंड एक पूरी तरह से अपारदर्शी रंग के लिए रंग, लेकिन पाठ खींचने से पहले मैं उस रंग को भर नहीं रहा था। जैसे ही मैंने किया, पाठ पूरी तरह से प्रस्तुत किया गया। धन्यवाद! – Bryan

0

आप बस एक अपारदर्शी पृष्ठभूमि पर तेज लग रही पाठ प्राप्त करने की कोशिश और CATextLayer के साथ दीवार के खिलाफ अपने सिर मार रहे हैं, तो - हार और इनसेट अक्षम और 0. नमूना कोड के लिए सेट linefragmentpadding साथ NSTextField का उपयोग तेजी से है, लेकिन आप चाहिए आसानी से अनुवाद करने में सक्षम हो सकता है ...

var testV = NSTextView() 
testV.backgroundColor = NSColor(calibratedRed: 0.73, green: 0.84, blue: 0.89, alpha: 1) 
testV.frame = CGRectMake(120.0, 100.0, 200.0, 30.0) 
testV.string = "Hello World!" 
testV.textContainerInset = NSZeroSize 
testV.textContainer!.lineFragmentPadding = 0 
self.addSubview(testV) 

मेरे लिए करने के लिए पाठ बराबर प्रदर्शित करता है:

var testL = CATextLayer() 
testL.backgroundColor = NSColor(calibratedRed: 0.73, green: 0.84, blue: 0.89, alpha: 1).CGColor 
testL.bounds = CGRectMake(0.0, 0.0, 200.0, 30.0) 
testL.position = CGPointMake(100.0, 100.0) 
testL.string = "Hello World!" 
testL.fontSize = 14 
testL.foregroundColor = NSColor.blackColor().CGColor 
self.layer!.addSublayer(testL)