1

NSDictionaryを使用して、appDelegateファイルのUIBarButtonItemの外観を変更しています。

UIBarButtonItem *barButtonItemProxy = [UIBarButtonItem appearanceWhenContainedIn:
                                       [UINavigationBar class], [UINavigationController class], nil];

NSDictionary *textAttributes = @{UITextAttributeFont :
                                     [UIFont fontWithName:@"ChocoBold" size:13.0f],
                                 UITextAttributeTextColor : [UIColor whiteColor],
                                 UITextAttributeTextShadowColor : [UIColor blackColor],
                                 UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetMake(0.0f, -1.0f)]
                                 };
[barButtonItemProxy setTitleTextAttributes:textAttributes forState:UIControlStateNormal];

アプリはシミュレーターで正常に動作しますが、デバイスで実行すると、次の例外を除いてアプリがクラッシュします。

 [__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]

クラッシュは一列に発生しNSDictionary *textAttributesます。

その辞書でどのパラメータがnilであるかわかりませんか?

4

1 に答える 1

4
NSLog(@"font family %@",[UIFont fontNamesForFamilyName:@"Choco"]);

アプリに choco フォント ファミリーが存在する場合は、使用可能なすべてのフォント名がログに記録されます。次に、正確なフォント名をコピーします。chocobold ではなく Choco-Bold など、使用しているフォント名が間違っている可能性があります。

NSMutableDictionary *textAttributes = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                       [UIColor whiteColor],UITextAttributeTextColor,
                                       [UIColor blackColor],UITextAttributeTextShadowColor,
                                       [NSValue valueWithUIOffset:UIOffsetMake(0.0f, -1.0f)],UITextAttributeTextShadowOffset,
                                       [UIFont fontWithName:@"Helvetica" size:13.0f],UITextAttributeFont,nil];

「Helvetica」フォントで試してみてください。それが機能する場合は、フォントに問題があります。

于 2013-03-09T17:43:29.803 に答える