मेरे पास UILabel
का कस्टम सबक्लास है जो CoreText का उपयोग करके कस्टम ड्राइंग बनाता है। मैं UIFont
का उपयोग करके अपने तारों को खींचता था जो कि फ़ॉन्ट प्रॉपर्टी का उपयोग करके लेबल तक पहुंचने पर सेट होता है। मैं फ़ॉन्ट में कुछ लक्षण भी जोड़ता हूं। यहां ऐसा लगता है:UIFont को CTFontRef में कनवर्ट करें और रेटिना डिस्प्ले पर इटैलिक जोड़ें
UIFont* font = [self font];
CTFontRef ref = CTFontCreateWithName((CFStringRef)[font name], [font pointSize], NULL);
CTFontRef italicFont = CTFontCreateCopyWithSymbolicTraits(ref, [font pointSize], NULL, kCTFontItalicTrait, kCTFontItalicTrait);
यह तब तक ठीक काम करता था जब तक कि नया आईपैड अपने रेटिना डिस्प्ले के साथ दिखाई नहीं देता। जब मैं CTFontCreateCopyWithSymbolicTraits
कॉल करता हूं, तो यह शून्य वापसी मूल्य उत्पन्न करता है। मुझे पता चला कि [font name]
इन नए उपकरणों पर "हेल्वेतिकाएनयूयूयू" लौटाता है। CTFontCreateWithName
इस निजी फ़ॉन्ट नाम के साथ ठीक काम करता प्रतीत होता है, लेकिन CTFontCreateCopyWithSymbolicTraits
नहीं है। फिर भी अगर मैं [UIFont italicSystemFontOfSize:[font pointSize]]
का उपयोग करके एक इटैलिक फ़ॉन्ट बना देता हूं तो यह एक इटैलिक फ़ॉन्ट बनाता है जिसके लिए [font name]
अभी भी "हेल्वेतिकाएयूयूयूआई" लौटाता है।
मुझे अपने UIFont
को CTFontRef
में कैसे परिवर्तित करना चाहिए ताकि मैं अभी भी रेटिना और गैर-रेटिना डिस्प्ले पर अपने CTFontRef
पर नए लक्षण लागू कर सकूं?
और अपने विकल्प है ... – ssteinberg
हा। कोर टेक्स्ट में आपका स्वागत है। –
बेकार डाउनवोट के लिए उपरोक्त। –