更改UINavigationBar字体属性?

我有一个UINavigationBar添加到我的UIViewController视图。 我想更改字体属性。 请注意,我想要更改UINavigationBar而不是控制器。 在我使用UINavigationController的应用程序中,我使用self.navigationItem.titleView = label; 显示自定义标签。

我怎样才能完成在我的UINavigationBar有一个自定义标题?

PS我用它来设置标题文本self.navBar.topItem.title = @"Information"; 我的UINavigationBar。

从iOS 5开始,我们必须使用titleTextAttribute Dictionary(UInavigation控制器类引用中的预定义字典)来设置标题文本颜色和导航栏的字体。

 [[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIColor blackColor], NSForegroundColorAttributeName, [UIFont fontWithName:@"ArialMT" size:16.0], NSFontAttributeName,nil]]; 

以下教程是定制UIElements的最佳教程,如U导航栏,UI分段控件,UITabBar。 这可能对你有帮助

http://www.raywenderlich.com/4344/user-interface-customization-in-ios-5

(这是不可能的使用新的iOS 5.0外观API)。

编辑:

iOS> = 5.0:

设置导航栏的标题文本属性:

 // Customize the title text for *all* UINavigationBars NSDictionary *settings = @{ UITextAttributeFont : [UIFont fontWithName:@"YOURFONTNAME" size:20.0], UITextAttributeTextColor : [UIColor whiteColor], UITextAttributeTextShadowColor : [UIColor clearColor], UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetZero]}; [[UINavigationBar appearance] setTitleTextAttributes:settings]; 

iOS <5.0

UINavigationItem没有一个叫label的属性,只有一个titleView。 您只能通过设置自定义标签来设置字体作为此标题视图您可以使用以下代码:(如此处所示 )

 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 44)]; label.font = [UIFont fontWithName:@"YOURFONTNAME" size:20.0]; label.shadowColor = [UIColor clearColor]; label.textColor =[UIColor whiteColor]; label.text = self.title; self.navigationItem.titleView = label; [label release]; 

把这个放在你的应用程序委托中

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

来自Ray Wenderlich:

http://www.raywenderlich.com/4344/user-interface-customization-in-ios-5

 [[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0], UITextAttributeTextColor, [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8], UITextAttributeTextShadowColor, [NSValue valueWithUIOffset:UIOffsetMake(0, -1)], UITextAttributeTextShadowOffset, [UIFont fontWithName:@"STHeitiSC-Light" size:0.0], UITextAttributeFont, nil]]; 

在iOS8中,使用下面的代码来设置字体:

 var navigationBarAppearance = UINavigationBar.appearance() let font = UIFont(name: "Open Sans", size: 17) if let font = font { navigationBarAppearance.titleTextAttributes = [NSFontAttributeName: font, NSForegroundColorAttributeName: UIColor.whiteColor()] } 

下面的链接将帮助你。 这取决于你想在哪里设置应用程序中当前viewController的导航栏的字体属性

你可以在这里find很好的教程% http://www.appcoda.com/customize-navigation-status-bar-ios-7/? utm_campaign=iOS_Dev_Weekly_Issue_118&utm_medium = email&utm_source=iOS% 2BDev % 2BWeekly

基本的想法是创buildNSDictionary实例,并填写您所需的字体和其他属性。 我完成了这个解决scheme:

在你的-viewDidLoad控制器方法中,在[super viewDidLoad]放在这行之后:

 UIColor *color = [UIColor redColor]; NSShadow *shadow = [NSShadow new]; UIFont *font = [UIFont fontWithName:@"EnterYourFontName" size:20.0] shadow.shadowColor = [UIColor greenColor]; shadow.shadowBlurRadius = 2; shadow.shadowOffset = CGSizeMake(1.0f, 1.0f); //fill this dictionary with text attributes NSMutableDictionary *topBarTextAttributes = [NSMutableDictionary new]; //ios 7 topBarTextAttributes[NSForegroundColorAttributeName] = color; //ios 6 topBarTextAttributes[UITextAttributeTextColor] = color; //ios 6 topBarTextAttributes[UITextAttributeTextShadowOffset] = [NSValue valueWithCGSize:shadow.shadowOffset]; topBarTextAttributes[UITextAttributeTextShadowColor] = shadow.shadowColor; //ios 7 topBarTextAttributes[NSShadowAttributeName] = shadow; //ios 6 topBarTextAttributes[UITextAttributeFont] = font; //ios 7 topBarTextAttributes[NSFontAttributeName] = font; //for all the controllers uncomment this line // [[UINavigationBar appearance]setTitleTextAttributes:topBarTextAttributes]; //for current controller uncoment this line // self.navigationController.navigationBar.titleTextAttributes = topBarTextAttributes; 

不要忘记将字体添加到您的目标。

我做了一切可以做的关于字体,我不能加载它,实际上字体不是我的目标的成员。

所以检查目标成员以及添加的自定义字体。