如何在导航栏中放置 UIImage 使其成为徽标?
Posted
技术标签:
【中文标题】如何在导航栏中放置 UIImage 使其成为徽标?【英文标题】:How to place a UIImage in Navigationbar such that its a logo? 【发布时间】:2014-05-27 05:40:01 【问题描述】:我想在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,但对齐不好。而且在运行代码时视图似乎是空白。..
【问题讨论】:
你用过故事板 是的,我在故事板中工作,ios7。 使用以下代码代替最后一行:self.navigationItem.titleView = imageView; stii 对答案不满意?那我来回答。 @Nirav : 发表你的答案......即使我在科威特作为 iOS 开发人员工作...... 【参考方案1】:将Bar Button Item
插入左侧的Viewcontroller
,并将图片插入Bar item
查看图片
【讨论】:
你需要任何修改 效果很好。但它显示为条形按钮项目,即整个图像显示为蓝色。 在你的问题中是在导航栏的左侧设置图像,这就是我给它的,你需要以编程方式添加图像 你需要添加没有导航栏 将色调和插图调整为您喜欢的任何颜色/尺寸【参考方案2】:我在上一个项目中遇到了同样的问题,你可以创建一个尺寸等于 500*88 像素的新 logo.png,让你的 logo 在它的左侧。填充来自 png 其余部分的透明颜色。
UIImageView *titleImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logoName_500.png"]];
[titleImageView setFrame:CGRectMake(0, 0, 250, 44)];
self.navigationItem.titleView = titleImageView;
希望这有帮助。
【讨论】:
【参考方案3】:试试这样:
self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo"]];
还要确保 UIImage 不是 nil 并且它确实有一个有效的图像。
【讨论】:
它与您的代码有点不同。我确实看过。你检查 UIImage 不是 nil 吗?【参考方案4】:我通常做的是
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];
【讨论】:
我使用导航控制器,需要显示带有 bg 图像的导航栏,我需要将我的徽标放在左侧。 我无法上传快照。 @yazh : 你能发布代码你有导航栏的背景图片吗?我会说在 Dropbox 上发布您的示例代码...【参考方案5】:我认为这是图像渲染模式的问题。你可以试试下面的代码
UIImage *logo = [[UIImage imageNamed:@"logo"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIBarButtonItem *item = [[UIBarButtonItem alloc]initWithImage:logo style:UIBarButtonItemStylePlain target:self action:nil];
self.navigationItem.leftBarButtonItem = item;
您甚至可以通过设置UIImageRenderingModeAlwaysOriginal
来尝试使用您当前的代码。
【讨论】:
【参考方案6】:@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;
【讨论】:
【参考方案7】: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;
【讨论】:
【参考方案8】:我已经尝试并得到了以下解决方案,
func addIconToNavigationBar()
let logoContainer = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 30))
let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 100, height: 30))
imageView.contentMode = .scaleAspectFit
let image = UIImage(named: "FlashScreenTitle")
imageView.image = image
logoContainer.addSubview(imageView)
navigationItem.leftBarButtonItem = UIBarButtonItem(customView: logoContainer)
在上述解决方案中,我创建了一个 UIView 并在该视图中添加了 ImageView。然后使用我的 UIView 创建自定义 BarButtonItem 并将其分配给 leftBarButtonItem。
记得在viewDidLoad()方法中调用addIconToNavigationBar()方法
【讨论】:
以上是关于如何在导航栏中放置 UIImage 使其成为徽标?的主要内容,如果未能解决你的问题,请参考以下文章
如何像在 iMessage 群聊中一样在导航栏中放置集合视图