2012-11-24 33 views
1

我在iOS 6下自定義iOS應用程序的UINavigationBar。因此,我使用setTitleTextAttributes來這樣做。UITextAttributeFont在設備上導致NSInvalidArgumentException,但不在模擬器中

但是具體設置

NSDictionary *attribute = @{UITextAttributeFont : [UIFont fontWithName:@"Bernard MT Condensed" size:21.0]}; 

導致應用程序崩潰的設備上,但在模擬器,但下列情況除外:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: 
attempt to insert nil object from objects[0]' 

我發現這個question這似乎是同一種,但我的設備我的模擬器設置爲確切相同的區域se (語言,區域格式)。

值得注意的一個事實是,區域設置但是設置爲美國英語在兩個環境中,但我展示與丹麥特殊字符丹麥區域格式文本,它確實工作在模擬器上,如前所述。

+0

您嘗試使用的字體可能不在實際的iOS設備上。 – rmaddy

+0

[iOS 6字體列表](http://support.apple.com/kb/HT5484?viewlocale=zh_CN&locale=zh_CN) – rmaddy

+0

但是,它是我的資源的一部分,並添加到'應用程序提供的字體'中。正如我所提到的,它可以在模擬器中完美地運用字體和一切。 – Zappel

回答

3

您使用的字體是一種自定義字體,需要將字體文件添加到應用程序的資源和Info.plist中的條目中。

文件名大小寫在真實設備上很重要,但不是模擬器。您需要確保Info.plist中的條目與實際字體文件的實際文件名(包括大小寫)匹配。

對於那些認爲使用模擬器的人來說,這已經足夠了 - 這是在真實設備上進行測試至關重要的原因之一。

相關問題