如何设置带图像的导航栏?

时间:2014-03-26 10:53:24

标签: ios ios7 uinavigationbar

UINavigationBar iOS7上发生了一些奇怪而令人沮丧的事情。我正在尝试添加这样的图像:

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"Logo_Small.png"] forBarMetrics:UIBarMetricsDefault];

结果是我的标题字母 - 希伯来字母 - 在导航栏上重复出现。

我尝试了UIBarMetrics标志的所有四个选项,但是对于其他三个选项,徽标就会消失。我还根据文档将图像大小设置为 320x64 。但似乎没有什么是正确的,而且我即将放弃使用徽标并且只有一个controller.title。

6 个答案:

答案 0 :(得分:0)

如果以上操作无效,请在您的NavigationBar中添加imageview,如下面的代码所示。它有效。

 UIImage *image = [UIImage imageNamed: @"NavigationBar@2x.png"];    
 UIImageView *imageView = [[UIImageView alloc] initWithImage: image];    
 imageView.frame = CGRectMake(0, 0, 320, 44);   
 [self.navigationController.navigationBar addSubview:imageView];

答案 1 :(得分:0)

执行以下操作:

UIImage *gradientImage = [[UIImage imageNamed:@"Logo_Small.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(-4, 300, 10, 300)];// play here
[[UINavigationBar appearance] setBackgroundImage:gradientImage forBarMetrics:UIBarMetricsDefault];

答案 2 :(得分:0)

你可以这样做

UIImageView *iv = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,320,44)];
iv.image = [UIImage imageNamed:@"Logo_Small.png"];
self.navigationItem.titleView = iv;

答案 3 :(得分:0)

使用此,

   UIImage *navBarImage64 = [[UIImage imageNamed:@"Logo_Small.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
   [[UINavigationBar appearance] setBackgroundImage:navBarImage64 forBarMetrics:UIBarMetricsDefault];

答案 4 :(得分:0)

你的代码实际上是有效的。问题是你可能在将UINavigationBar添加到屏幕后调用它。

要验证您的代码是否正常工作,您可以尝试将其放入AppDelegate的didiFinishedLaunchingWithOptions中。

答案 5 :(得分:0)

要使用Image自定义导航栏,请使用

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"ImageName.png"] forBarMetrics:UIBarMetricsDefault];