如何在导航栏中放置UIImage以使其成为徽标?

在此处输入图像描述在此处输入图像描述 我想在NavigationBar的左侧放置一个徽标/图像。 我在代码中尝试这个,但它没有正常工作。

 UIImage *logo = [UIImage imageNamed:@"logo.png"]; UIImageView *imageView = [[UIImageView alloc] initWithImage: logo]; imageView.frame = CGRectMake(2, 2, 40, 40); self.navigationItem.titleView = [[UIImageView alloc] initWithImage:logo]; 

我尝试将视图放在第一位,然后将图像放置为UIImageView但对齐效果不佳。 此外,在运行代码时,视图似乎是空白区域。

Bar Button Item插入左侧的Viewcontroller ,然后将图像插入Bar item查看图像

在此处输入图像描述

我在上一个项目中遇到了同样的问题,你可以创建一个新的logo.png,其尺寸等于500 * 88像素,在它的左侧做你的标志。 从png的其余部分填充透明色。

 UIImageView *titleImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logoName_500.png"]]; [titleImageView setFrame:CGRectMake(0, 0, 250, 44)]; self.navigationItem.titleView = titleImageView; 

希望这有用。

试试这样:

 self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo"]]; 

还要确保UIImage不是nil,它确实有一个有效的图像。

我通常做的是

 1. Hide Navigation Bar [self.navigationController setNavigationBarHidden:YES animated:NO]; 2. Use image of size 640 x 88 & 320 x 44 UIImage *navigationImage = [UIImage imageNamed:@"navigationImage.png"]; 3. Use this image in Imageview at frame CGRectMake(0,0,320,44) UIImageView *navImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,320,44)]; navImageView.image = navigationImage; [self.view addSubview:navImageView]; 

我认为这是图像渲染模式的问题。 你能试试下面的代码吗?

  UIImage *logo = [[UIImage imageNamed:@"logo"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; UIBarButtonItem *item = [[UIBarButtonItem alloc]initWithImage:logo style:UIBarButtonItemStylePlain target:self action:nil]; self.navigationItem.leftBarButtonItem = item; 

您甚至可以通过设置UIImageRenderingModeAlwaysOriginal来尝试使用当前代码。

 @property(nonatomic,strong) UIView *titleImageView; - (UIView *)titleImageView { if (!_titleImageView) { CGFloat width = self.view.frame.size.width; _titleImageView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, width, 44)]; [self.titleLabelView setBackgroundColor:[UIColor clearColor]]; UIImage *img = [UIImage imageNamed:@"myImg"]; UIImageView *imgView = [[UIImageView alloc] initWithImage:img]; CGRect imageViewRect = imgView.frame; /* //adjust image position if you need imageViewRect.x = 10; imageViewRect.y = 3; imageView.frame = imageViewRect; */ [_titleLabelView addSubview:imgView]; } return _titleLabelView; } self.navigationItem.titleView = self.titleLabelView; 
 UIBarButtonItem *logoItem1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:nil]; UIBarButtonItem *logoItem2 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItem target:self action:nil]; NSArray *actionButtonItems = @[logoItem1, logoItem2]; self.navigationItem.rightBarButtonItems = actionButtonItems;