मेरे ऐप में मैं पथ के साथ पाठ प्रस्तुत करने की कोशिश कर रहा हूं; यह अधिकांश पात्रों के लिए ठीक है लेकिन जापानी (या कुछ भी गैर मैक-रोमन) के लिए नहीं है। मुझे [NSString drawAtPoint] का उपयोग करने की सलाह दी गई है जो मेरे CATiledLayer में सही वर्ण प्रदर्शित करता है; हालांकि, वे लगभग 5 सेकंड के बाद गायब हो जाते हैं। इस समय मैं परत को ज़ूम कर सकता हूं और वे ठीक से स्केल कर सकते हैं, लेकिन वे आमतौर पर शेष पाठ की तरह कैटिल्डलेयर के लिए प्रतिबद्ध नहीं लगते हैं।CGContextShowGlyphsAtPoint समस्याओं के स्थान पर NSString की drawAtPoint विधि का उपयोग
प्रस्तुत करने से पहले, मैं स्ट्रिंग की जांच करता हूं और यह तय करता हूं कि उनमें से कोई भी प्रस्तुत करने योग्य नहीं होगा। मैं मुद्दे हैं करने जा रहा हूँ, मैं drawAtpoint बजाय का उपयोग करें:
if (!isFullyDisplayable)
{
CGContextShowGlyphsAtPoint(context, pt.x, pt.y, realGlyph, 1);
}
else {
// fall back on less flexible font rendering for difficult characters
NSString *b = [gv text];
NSString *c = [b substringWithRange:NSMakeRange(j,1)];
[c drawAtPoint:pt withFont:[UIFont fontWithName:@"Helvetica-Bold" size:16.0]];
}
किसी को भी क्यों पाठ गायब हो जाता है के बारे में कोई संकेत है?
जैसे ही drawAtPoint मेरी डिबग आउटपुट प्रयोग किया जाता है से भर जाता है:
<Error>: CGContextGetShouldSmoothFonts: invalid context
<Error>: CGContextSetFont: invalid context
<Error>: CGContextSetTextMatrix: invalid context
<Error>: CGContextSetFontSize: invalid context
<Error>: CGContextSetTextPosition: invalid context
<Error>: CGContextShowGlyphsWithAdvances: invalid context
तो मैं इसे अपने संदर्भ प्रबंधन के साथ कुछ है अनुमान लगा रहा हूँ, लेकिन मैं मान लिया है कि अगर यह एक ही है जैसा कि मैं CGContextShowGlyphsAtPoint का उपयोग करता हूं, इसमें पहले से ही सही संदर्भ होना चाहिए?
आपको यह उल्लेख करना चाहिए कि यह केवल आईओएस 4.0 और बाद में काम करता है। UIKit ग्राफ़िक एक्सटेंशन पुराने FWs में थ्रेड-सुरक्षित नहीं हैं। – Split