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

Posted

技术标签:

【中文标题】如何设置带有图像的导航栏?【英文标题】:How to setup a navigation bar with image? 【发布时间】:2014-03-26 10:53:23 【问题描述】:

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

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

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

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

【问题讨论】:

设置图片大小?您的意思是“使用了正确尺寸的图像”? 试试这个,[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithPatternImage:@"Logo_Small.png"]]; for iOS7 with 320x64 image. 【参考方案1】:

执行以下操作:

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

【讨论】:

【参考方案2】:

你可以这样做

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

【讨论】:

【参考方案3】:

使用这个,

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

【讨论】:

【参考方案4】:

如果上述方法不起作用,则在 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];

【讨论】:

【参考方案5】:

您的代码确实有效。问题是您可能在 UINavigationBar 添加到屏幕后调用它。

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

【讨论】:

【参考方案6】:

要使用 Image 自定义导航栏,

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

【讨论】:

以上是关于如何设置带有图像的导航栏?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 11 大标题导航栏的图像

如何使用资产目录作为导航栏背景图片?

如何移动导航栏图像?

iOS 8 启动图像文件 - 导航栏和状态栏

Swift - 如何在栏导航上显示图像

在情节提要中设置导航栏项目图像不起作用