30

UIAppearance を使用して UINavigationBar と UIBarButtonItem にフォントを適用していますが、問題が発生しています。私はこのコードを実行しました:

[[UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class], nil] 
setTitleTextAttributes:
@{NSFontAttributeName : [UIFont fontWithName:@"My_Font" size:17.0]} 
forState:UIControlStateNormal];

NSLog(@"%@", [[UIBarButtonItem appearanceWhenContainedIn:
[UIToolbar class], nil] titleTextAttributesForState:UIControlStateNormal]);

iOS 7 でのそのログの結果は次のとおりです。

(null)

iOS 6 での結果は次のとおりです。

{
    NSFont = "<UICFFont: 0x1d897a80> font-family: \"My_Font\"; font-weight: normal; font-style: normal; font-size: 17px";
}

iOS 7 のドキュメントには、これが機能しないことを示すものは何も見つかりません。他の誰かにこの問題がありましたか?

編集 1

NSString UIKit Additions Reference[UINavigationBar appearance]で説明されているように、フォントをデフォルトのnavbar / barButtonItemサイズに設定するためにポイントサイズを0に設定していたという問題で実際にこれを機能させましたが、これは明らかに機能しなくなりましたiOS 7. 代わりに、ポイント サイズを 0 に設定すると、システム フォントが返されます。

まだ設定できませtitleTextAttributes

[UIBarButtonItem appearanceWhenContaintedIn:[UIToolbar class], nil]]

4

7 に答える 7

9

これが私がiOS-7で行うことです

UIColor *red = [UIColor colorWithRed:165.0f/255.0f green:1.0f/255.0f blue:0.0f/255.0f alpha:1.0];
UIFont *font = [UIFont fontWithName:@"HelveticaNeue-Light" size:24.0f];

NSMutableDictionary *navBarTextAttributes = [NSMutableDictionary dictionaryWithCapacity:1];
[navBarTextAttributes setObject:font forKey:NSFontAttributeName];
[navBarTextAttributes setObject:red forKey:NSForegroundColorAttributeName ];

self.navBar.titleTextAttributes = navBarTextAttributes;
于 2013-12-19T15:21:51.007 に答える
5

UIBarButtons には、外観プロキシを使用します。

 NSDictionary *normalAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                      [UIFont fontWithName:@"Helvetica Neue" size:fontSize], UITextAttributeFont,
                                      nil];
    [[UIBarButtonItem appearance] setTitleTextAttributes:normalAttributes                                                                                                   
                                                forState:UIControlStateNormal];

スタイルが影響する UIBarButtonItems を制限したい場合は、代わりに AppearanceWhenContainedIn: を使用してください。

UINavigationBar の場合、UILabel を作成して、navigationItem.titleView に設定できます。

UIabel *title = [[UILabel alloc] initWithFrame:CGRectZero];
title.backgroundColor = [UIColor clearColor];
title.font = [*yourfont*];
title.textColor = [*your color*];
self.navigationItem.titleView = title;
于 2013-09-19T15:36:38.213 に答える