IOS5中如何自定义UINavigationBar

Posted

技术标签:

【中文标题】IOS5中如何自定义UINavigationBar【英文标题】:How to customize UINavigationBar in IOS5 【发布时间】:2012-01-05 00:39:31 【问题描述】:

ios5中,我还不知道如何自定义UINavigationBar。

我的代码是这样的:

    [[UINavigationBar appearance] setBackgroundColor:[UIColor colorWithWhite:0.5f alpha:1.0]];

    [[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor blackColor],UITextAttributeTextColor 
,[UIColor blackColor], UITextAttributeTextShadowColor 
,[NSValue valueWithUIOffset:UIOffsetMake(0, 0)], UITextAttributeTextShadowOffset
,[UIFont fontWithName:@"Arial" size:20.0],UITextAttributeFont 
, nil]];


    // Customize UIBarButtonItems
 UIImage *gradientImage44 = [[UIImage imageNamed: @"title__bg.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];       

[[UINavigationBar appearance] setBackgroundImage:gradientImage44 forBarMetrics:UIBarMetricsDefault];

    [[UIBarButtonItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],UITextAttributeTextColor
,[UIColor whiteColor], UITextAttributeTextShadowColor 
,[NSValue valueWithUIOffset:UIOffsetMake(0, 0)], UITextAttributeTextShadowOffset
,[UIFont fontWithName:@"Arial" size:14.0],UITextAttributeFont
, nil] forState:UIControlStateNormal];

    // Customize back button items differently
    UIImage *buttonBack30 = [[UIImage imageNamed:@"bn_back"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 13, 0, 5)];

    [[UIBarButtonItem appearance] setBackButtonBackgroundImage:buttonBack30 forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

这张图是 PopoverView 中使用的 UINavigationViewController。

这张图是Modal打开的UINavigationViewController。

如你所见,我设置了 background-image,但 NavigationBar 的边框是不同的。

这是 PopoverView 的问题吗?

我不知道我错过了什么。

请告诉我你的建议。谢谢!!!新年快乐!!!

【问题讨论】:

***.com/questions/5575821/custom-nav-bar-styling-ios/… 【参考方案1】:

转到 AppDelegate.m 并将代码粘贴到

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

将状态栏设置为黑色。

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque 
                                            animated:NO];

将@"menubar.png" 更改为图片的文件名。

 UIImage *navBar = [UIImage imageNamed:@"menubar.png"];

[[UINavigationBar appearance] setBackgroundImage:navBar 
                                   forBarMetrics:UIBarMetricsDefault];

【讨论】:

【参考方案2】:

看看这个:UINavigationBar Apple developer reference

【讨论】:

以上是关于IOS5中如何自定义UINavigationBar的主要内容,如果未能解决你的问题,请参考以下文章

iOS 5 - 1 自定义 UINavigationBar 不同于所有其他

新的ios5api:自定义UINavigationBar背景属性与简单的功能!!!

UINavigationBar 自定义背景与悬垂(iOS 5)

UINavigationBar 自定义标题视图

UINavigationBar 和新的 iOS 5+ 外观 API - 如何提供两个背景图像?

自定义 UINavigationBar 使其不可见,但保持按钮可见