UINavigationBar自定义标题视图

dar*_*sky 0 iphone objective-c uinavigationbar uinavigationcontroller uiappearance

我正在使用iOS 5 UINavigationBarUIAppearance协议来自定义我的所有导航栏.

这是我的自定义功能:

- (void)customizeApperance
{
    [[UINavigationBar appearance] setTintColor:[UIColor clearColor]];
    [[UINavigationBar appearance] setAlpha:0.7];
    UIImageView *titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"title.png"]];
    [[UINavigationBar appearance] setTitleView:titleView];
}
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  • 首先是颜色不是clearColor黑色.有什么建议?

  • 标题视图根本没有出现.Ray Wenderlich通过添加:[[rootViewController navigationItem] setTitleView: [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"miniLogo.png"]]]in 来演示如何做到这一点applicationDidFinishLaunching.但问题是标题视图只会添加到根视图控制器中.我正在使用一个UINavigationController当我厌倦了替换rootViewControllerwith navigationController(我在AppDelegate中的导航控制器的名称)时,我根本看不到标题视图.我该如何解决这个问题?为什么不工作customizeApperance()?使用外观的关键不仅仅是创建一次标题视图(就像我在函数上面所做的那样)并且在所有导航栏中都是全局的吗?我怎样才能做到这一点?

Mar*_*n R 6

[UIColor clearColor]是完全透明的颜色(alpha = 0).将其设置为浅色可使(黑色)背景闪耀.也许你想要[UIColor whiteColor]

titleView是一个属性UINavigationItem,每个视图控制器都有自己的属性navigationItem.因此,您无法全局设置标题视图.但您可以UINavigationBar使用外观协议设置背景图像,这可能有助于:

[[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];  
Run Code Online (Sandbox Code Playgroud)