2011-03-24 15 views
17

समझने की कोशिश कर रहा हूं कि मुझे CGContextShowTextAtPoint के साथ निम्न गुणवत्ता वाले चित्र क्यों मिल रहे हैं? संलग्न छवि देखें: imgरेटिना डिस्प्ले कोर ग्राफिक्स फ़ॉन्ट गुणवत्ता

पत्र "डब्ल्यू" को कैलियर पर CGContextShowTextAtPoint का उपयोग करके खींचा गया है और बहुत पिक्सलाइज्ड दिखता है। इसके बगल में वाला बटन एक मानक बटन है और उम्मीद के अनुसार उच्च रेज दिखता है। मैं पाठ ड्राइंग को हाय-रेज प्राप्त करना चाहता हूं।

enter image description here

उत्तर

36

डिफ़ॉल्ट रूप से, अपने CALayer रेटिना डिस्प्ले स्क्रीन के उच्च संकल्प पर इसकी क्वार्ट्ज सामग्री प्रस्तुत नहीं हो रही।

if ([layer respondsToSelector:@selector(setContentsScale:)]) 
{ 
    layer.contentsScale = [[UIScreen mainScreen] scale]; 
} 

कोई प्रभाव नहीं होगा सिर्फ पाठ प्रतिपादन तो आप कस्टम क्वार्ट्ज के साथ अपने सभी परतों के लिए यह करने के लिए की आवश्यकता होगी, CALayers के भीतर अपने क्वार्ट्ज ड्राइंग के सभी है, लेकिन आपको निम्न की तरह इस कोड का उपयोग सक्षम कर सकते हैं सामग्री।

+0

मैं CALayer पर contentScaleFactor देख पा रहे हैं नहीं – vance

+0

धन्यवाद, यह एक CALayer पर contentsScale है: CGFloat पैमाने = [[UIScreen mainScreen] पैमाने]; self.contentsScale = scale; – vance

+0

असल में, सामग्री सेट करना स्केल छवि को * बहुत * धुंधला दिखता है। सेकंड संलग्न छवि देखें। – vance

5

CGContextScaleCTM आप के लिए किसी भी परिणाम देने का उपयोग कर रहा है? जब एक ग्राफिक्स संदर्भ, कुछ इस तरह के साथ काम:

CGFloat scale = [[UIScreen mainScreen] scale]; 
CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextScaleCTM(context, scale, scale); 
1

कार्यों के एक समूह को नियंत्रित करता है कैसे कोर ग्राफिक्स फोंट प्रस्तुत करता है:

  • CGContextSetAllowsAntialiasing
  • CGContextSetAllowsFontSmoothing
  • CGContextSetAllowsFontSubpixelPositioning
  • CGContextSetAllowsFontSubpixelQuantization
0

स्विफ्ट संस्करण:

textLayer.contentsScale = UIScreen.mainScreen().scale 

enter image description here

संबंधित मुद्दे