Wednesday, 15 August 2012

cocoa - How to render text in a CALayer using NSLayoutManager? -


मैं त्रिकोणीय का उपयोग कर रहा हूं NSLayoutManager, NSTextStorage & amp; NSTextContainer एक परत बैकड NSView में पाठ प्रस्तुत करने के लिए

मैं इस धारणा के तहत हूं कि यदि मैं overdate < / कोड> सही लौटने के लिए और इस प्रकार परतों का अधिक पूर्ण रूप से इस्तेमाल किया जा रहा है क्या यह सच है?

हालांकि, सभी उदाहरणों में मैंने NSLayoutManager का उपयोग करने के बारे में देखा है कि आपको निम्नलिखित कोड को drawRect < / Code>:

  layoutManager.drawGlyphsForGlyphRange (glyphRange, पर पॉइंट: NSMakePoint (0, 0))  

आप समकक्ष कॉल कैसे करेंगे इसके बजाय updateLayer के भीतर या कुछ अन्य परत-उन्मुख जगह?

< P> मैंने एक कस्टम CALayer बनाया और ड्रॉ इनकॉन्टेक्स्ट विधि को नीचे दिया गया है:

  ओवरक्राइड फ़नक ड्राइनकॉन्टेक्स्ट (सीटीएक्स: सीजीसीन्टेक्स्ट!) {एनएसजीफ़िक्स कंसटेक्स .saveGraphicsState () var nsgc = NSGraphicsContext (CGContext: ctx, flipped: false) NSGraphicsContext.setCurrentContext (nsgc) NSColor.whiteColor ()। SetFill () NSRectFill (NSMakeRect (0, 0, 84, 24)) lm.drawGlyphsForGlyphRange (glyphRange , परपॉइंट: एनएसएमकेपॉइंट (0, 0)) // टेक्स्ट कंटनीयर का स्थान NSGraphicsContext.restoreGraphicsState ()}  

यह काम हो गया है, लेकिन

  1. मुझे यकीन नहीं है कि अगर बचत और बहाल करने के लिए कोई निष्पादन प्रभाव है ऊपर के रूप में ग्राफिक्स संदर्भ।
  2. मुझे यकीन है कि एनएसवीयूज़ के updateLayer पद्धति में इसका उपयोग कैसे किया जाएगा, इसका उपयोग करने के लिए कोई संदर्भ नहीं है।

No comments:

Post a Comment