目前我的导航栏上有一个条形按钮,它是在我的故事板中创建的:
我想带走条形按钮的白色部分并仅保留图像。他们是这样做的吗?
当我尝试此代码时,没有条形按钮:
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setBackgroundImage:[UIImage imageNamed:@"19-gear.png"] forState:UIControlStateNormal];
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:btn];
self.navigationController.navigationBar.topItem.leftBarButtonItem = barButton;
答案 0 :(得分:2)
IButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(5,5,60,34);
[btn setBackgroundImage:[UIImage imageNamed:@"19-gear.png"] forState:UIControlStateNormal];
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:btn];
self.navigationController.navigationBar.topItem.leftBarButtonItem = barButton;
您还没有设置按钮的框架,为什么它不会出现在导航栏上。
答案 1 :(得分:1)
为什么不使用CustomView?
与UIBarButtonItem initWithCustomView:
然后您可以控制按钮(您必须提供图形)的确切方式。
Here's a related question讨论了如何设置自定义视图以响应点击次数。
<强> 编辑: 强>
这里有一些代码在错误检查方面超过顶部,但我很确定在你的设置中有些不太正确。使用它,我们可以找出它是什么。
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
if(btn)
{
[btn setBackgroundImage:[UIImage imageNamed:@"19-gear.png"] forState:UIControlStateNormal];
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:btn];
if(barButton)
{
if(self.navigationController)
{
if(self.navigationController.navigationBar)
{
if(self.navigationController.navigationBar.topItem)
{
self.navigationController.navigationBar.topItem.leftBarButtonItem = barButton;
} else {
NSLog( @"why is topItem null?");
}
} else {
NSLog( @"navigationBar appears to be null");
}
} else {
NSLog( @"navigationController is null");
}
} else {
NSLog(@"did not create UIBarButtonItem");
}
} else {
NSLog( @"did not create UIButton");
}