2012-01-28 11 views
12

मैं Xcode 4.2 में अपने प्रोजेक्ट के लिए एक कस्टम फ़ॉन्ट को जोड़ने के लिए कोशिश कर रहा हूँ के साथ विफल रहता है, लेकिन जब भी मैं इसे इस्तेमाल करने की कोशिश, मैं एक त्रुटि है कि वस्तु नहीं के बराबर है मिलता है।UIFont शून्य

मैंने किया है निम्नलिखित:
1) मेरी .plist मूल्य 'आवेदन द्वारा प्रदान की फ़ॉन्ट्स' के लिए एक पंक्ति जोड़ा गया: "LCDMono2 Ultra.ttf"
2) मेरे सहायक फ़ाइलें के लिए अक्षरों का जोड़ा और में यह पता चला है इसे सत्यापित करने के लिए एक्सकोड जोड़ा गया था।
3) सत्यापित जाओ जानकारी है कि पूरा नाम "LCDMono2 अल्ट्रा"
4) के साथ अपने प्रोजेक्ट में फ़ॉन्ट बनाया गया है का उपयोग करते हुए:

UIFont *myFont = [UIFont fontWithName:@"LCDMono2 Ultra" size:16]; 

और मैं इस प्रकार की कोशिश की है:

UIFont *myFont = [UIFont fontWithName:@"LCDMono2 Ultra" size:16.f]; 

5) 'nil' त्रुटि पैदा फ़ॉन्ट नाम (addObject:myFont.fontName) उपयोग करने के लिए कोशिश की,।

क्या त्रुटि पैदा हो सकता है? क्या यह नाम में जगह की तरह कुछ हो सकता है?

+3

उपयोग '[UIFont familyNames]' देखने के लिए अगर अपने फ़ॉन्ट वास्तव में हो रही ओएस द्वारा "देखा" है। इससे कम से कम संकीर्ण चीजें कम हो जाएंगी। मेरे पास कुछ प्रकार की फ़ॉन्ट फ़ाइलें आईओएस पहचान नहीं पाएंगी। – smparkes

+0

@smparkes - मैंने आपके उत्तर को पढ़ने से पहले ऐसा किया था! और निश्चित रूप से पर्याप्त है, एक्सकोड स्वचालित रूप से स्थान को हटा देता है, और नाम "LCDMono2Ultra" के रूप में दिखाई देता है और काम करता है। क्या वह हमेशा रास्ता नहीं है? धन्यवाद। – wayneh

+1

शायद एक्सकोड नहीं। शायद फ़ॉन्ट नाम में फ़ॉन्ट नाम एन्कोड किया गया है। एक छोटे से नि: शुल्क संकेत: आईओएस सिर्फ तुम इसलिए यदि आप एक परिवार से दो से अधिक चेहरे का उपयोग कर रहे एक परिवार से दो चेहरे लोड की सुविधा देता है, तो आप प्रत्येक चेहरे पर परिवार का नाम बदलने के लिए अद्वितीय होना करने की आवश्यकता होगी। उसमें ट्रैक करने में थोड़ी देर लग गई ... – smparkes

उत्तर

12

में फ़ॉन्ट का पूरा नाम अंतरिक्ष स्वचालित रूप से हटा दिया गया था के बारे में सोच की कोशिश करता हूँ परियोजना। मैंने मूल फ़ॉन्ट फ़ाइल की जांच की है, और अंतरिक्ष वहां है, इसलिए ऐप्पल को रिक्त स्थान से निपटना नहीं चाहिए। मैंने "एलसीडीमोनो 2 उलटा" के संदर्भ को बदल दिया और यह काम करता है।

+4

यह "रिक्त स्थान से निपटना नहीं चाहता", मुझे विश्वास है कि यह फ़ॉन्ट के पोस्टस्क्रिप्ट नाम का उपयोग कर रहा है। –

+4

डेविड डनहम सही है। आम तौर पर, यदि आप वास्तव में अपने कोड में फ़ॉन्ट का नाम हार्ड कोड करने जा रहे हैं, तो आपको फ़ॉन्ट को संदर्भित करने के लिए हमेशा पूर्ण पोस्टस्क्रिप्ट नाम का उपयोग करना चाहिए। (यह पोस्टस्क्रिप्ट नाम है जो रिक्त स्थान की अनुमति नहीं देता है)। आप यकीन है कि यह क्या है नहीं कर रहे हैं, के साथ फ़ॉन्ट बुक अपने मैक पर फ़ॉन्ट स्थापित तो में फ़ॉन्ट बुक, पोस्टस्क्रिप्ट नाम सहित विभिन्न नामों को दिखाने के लिए 'पूर्वावलोकन> दिखाएँ फ़ॉन्ट Info' चुनें। "एलसीडीमोनो 2 अल्ट्रा" का पोस्टस्क्रिप्ट नाम 'LCDMono2Ultra' है। – NSGod

+0

हाँ, आप सही हैं। मैंने अपने सिस्टम पर फ़ॉन्ट इंस्टॉल नहीं किया है, इसलिए मुझे फ़ॉन्ट जानकारी से वह जानकारी नहीं मिल सका। एक बार मैंने इसे स्थापित करने के बाद, मैं पोस्टस्क्रिप्ट नाम देख सकता हूं। धन्यवाद। – wayneh

2

आप में एक ब्रेकपाइंट रख दिया और जाँच की है कि आप myFont के लिए एक वैध UIFont वस्तु हो रही है है। यह जांचने लायक है क्योंकि सबसे अधिक संभावना यह है कि "एलसीडीमोनो 2 अल्ट्रा" वास्तव में फ़ॉन्ट परिवार का नाम है और आप जो उपयोग करना चाहते हैं वह "एलसीडीमोनो 2 अल्ट्रा-जनरल" या "एलसीडीमोनो 2 अल्ट्रा-बोल्ड" जैसा कुछ है। फ़ॉन्ट बुक के साथ अपना .ttf खोलें और देखें कि यह आपको कौन सी जानकारी देता है। सिर्फ वे क्या किया जाना चाहिए की जाँच करने के डीबगर में सरणी फोंट मुद्रण

NSArray *fonts = [UIFont fontNamesForFamilyName:"LCDMono2 Ultra"]; 

और फिर:

वैकल्पिक रूप से आप में फ़ॉन्ट बुक कुछ भी नहीं मिल सकता है अगर आप कॉल करने का प्रयास कर सकता है।

आशा इस मदद, मुझे पता है अगर यह काम नहीं करता है और मैं करने के लिए इसे जोड़ने के बाद कुछ और :)

+0

धन्यवाद, लेकिन मुझे समाधान मिला - ऊपर मेरी टिप्पणी देखें। – wayneh

8

मुझे कुछ घंटों के लिए यह वही समस्या थी और उपरोक्त सभी की कोशिश की और कोई भी काम नहीं किया, फ़ॉन्ट हर जगह जोड़ा जा रहा था और मैंने अन्य ऐप्स में काम करने वाले फोंट भी कोशिश की, लेकिन ऐसा कभी नहीं हुआ इस ऐप में जोड़ा गया।

ऐसा लगता है कि एक्सकोड 5 में कुछ बदल गया है, फ़ॉन्ट को इसे लक्षित करने के लिए जानकारी टैब के नीचे लक्षित गुणों में जोड़ा जाना था, जबकि पहले उन्हें "appName-info.plist" में जोड़ा जाना था, नीचे दी गई छवि देखें:

आशा इस मदद करता है किसी और।

enter image description here

+0

महत्वपूर्ण: विस्तार के साथ, संपूर्ण फ़ाइल नाम जोड़ें। –

0

अपने फ़ॉन्ट (शायद एक और नाम के साथ) का पता लगाएं और इस नाम का उपयोग।

for (NSString *familyName in [UIFont familyNames]) { 
     for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) { 
      NSLog(@"%@", fontName); 
     } 
    } 
0

मेरी फ़ॉन्ट फ़ाइल "Futura Heavy.ttf" है, तो मैं - का उपयोग नीचे की जगह की जगह को बदल देता हूं, फिर यह काम करता है!

class func futuraHeavy() -> UIFont { 
     return UIFont(name: "Futura-Heavy", size: 12)! 
    }