条形按钮项的图标即使是黑色,也会变成白色图标

3
我将这些图标用作工具栏中的按钮项.
http://stopiransnukes.org/images/home_icon.png

http://www.bladmuziekplus.nl/shop/files/images/icon_home.png
但即使它是黑色的,背景图像也会自动转换为白色。
我尝试通过代码设置图像背景,但仍然变成白色。
手动:我已经将上面的图像拖放到项目中。我选择了工具栏按钮项,并在右侧栏的第四个选项(盾牌图标)上选择不同的色调,在下拉菜单“条形按钮”下设置为上面的图像。
以编程方式:
  [self.homeButton setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor blackColor], UITextAttributeTextColor,nil] forState:UIControlStateNormal];

   [[self.homeButton] setImage:[UIImage imageNamed:@"home_icon.png"]];

我该如何修复它?提前谢谢。

你需要发布你的代码或屏幕截图,以展示你是如何在工具栏中添加按钮的。 - Dinesh Raja
为什么不试试这个。只需在Storyboard中拖放一个UIButton并添加一个图像,然后将其添加到UIBarButtonItem中,只需拖放即可,并向UIButton添加一个操作方法即可实现所需功能。尝试在Storyboard中完成它。除了按钮的操作方法外,不需要任何代码。 - Dinesh Raja
4个回答

2
这是一个逐步添加图像到UIButton并将该UIButton作为custom view添加到UIBarButtonItem中的过程,这个过程可以在storyboard中完成。我会给你添加一些图片以便更好地理解。 步骤1:storyboard视图中拖放toolbarDrag and drop the toolbar in your view 步骤2:在你的view中拖放UIButtonenter image description here 步骤3:在你的UIButton中拖放图像。 enter image description here 步骤4:UIButton拖放到工具栏中,现在你可以在右侧看到它已经添加到UIBarButtonItem中了。现在你只需要连接一个按钮的动作方法即可。 enter image description here

我尝试了相同的方法,但现在将图像作为背景图标而不是图标。即使它是黑色的,它也会变成白色。 - Jacob Wood
无法通过上述方法进行自定义。 - Jacob Wood
或者是的话,怎么做呢?我尝试着在代码中添加,但它仍然无法工作。 - Jacob Wood
当然,您可以连接任何您想要的插座,并且您也可以自定义它。 - Dinesh Raja
谁说你不能在Storyboard中自定义导航栏按钮?我在上面的回答中展示了如何做到这一点。仔细看看那个。@Gungor Basa在代码中解释的内容和我们在Storyboard中所做的是相同的。首先要理解整个过程,他的代码在做什么。 - Dinesh Raja
显示剩余4条评论

1

viewDidLoad

[super viewDidLoad];

//uıbarButtonItem firstButtonItem,secondButtonItem
UIImage* firstButtonImage = [UIImage imageNamed:@"firstImageName"];;
CGRect frameimg = CGRectMake(0, 0, 30, 30);
UIButton * someButton = [[UIButton alloc] initWithFrame:frameimg];
[someButton setBackgroundImage:firstButtonImage forState:UIControlStateNormal];
[someButton addTarget:self action:@selector(goToUserProfile)
     forControlEvents:UIControlEventTouchUpInside];
self.firstButtonItem = [[UIBarButtonItem alloc] initWithCustomView:someButton];


UIImage* secondButtonImage = [UIImage imageNamed:@"secondImageName"];
frameimg = CGRectMake(0, 0, 30, 30);
someButton = [[UIButton alloc] initWithFrame:frameimg];
[someButton setBackgroundImage:secondButtonImage forState:UIControlStateNormal];
[someButton addTarget:self action:@selector(likePhoto)
     forControlEvents:UIControlEventTouchUpInside];
[someButton setTag:1];
self.secondButtonItem = [[UIBarButtonItem alloc] initWithCustomView:someButton];

[self.toolbar setItems:[self addItemsToToolbar]];

添加工具栏项方法

- (NSMutableArray *)addItemsToToolbar{
NSMutableArray *items = [[NSMutableArray alloc] init];
UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
[items addObject:flexSpace];
[items addObject:self.firstButtonItem];
[items addObject:flexSpace];
[items addObject:self.secondButtonItem];
return items;

}


1

那么,我应该怎样保持与项目中保存的相同图像呢?在这种情况下应该是黑色。请告诉我如何做到这一点?我仍然很困惑。 - Jacob Wood
这应该会对你有所帮助:https://dev59.com/kU_Ta4cB1Zd3GeqPCZ5A - artey
我已经在Storyboard上创建了一个Bar Button Item。如何将此代码链接到它?我尝试了上面的代码,但它没有起作用。 - Jacob Wood
要从你的storyboard中访问bar按钮项,你需要在你的视图控制器中添加一个IBOutlet属性并将其链接起来。因为如果你使用storyboard,会得到一个已经初始化了的对象,所以最好在代码中完全初始化并添加bar按钮。确保使用initWithCustomView:。 - artey
我已经创建了一个 Bar Button 项目,并在 storyboard 上,我可以将这段代码添加到创建的项目中吗?基本上,我如何将按钮链接到按钮功能,例如图像背景。 - Jacob Wood

0
UIImage* infoButtonImage = [UIImage imageNamed:@"info_button.png"];;
CGRect frameimg = CGRectMake(0, 0, infoButtonImage.size.width, infoButtonImage.size.height);
UIButton * someButton = [[UIButton alloc] initWithFrame:frameimg];
[someButton setBackgroundImage:infoButtonImage forState:UIControlStateNormal];
[someButton addTarget:self action:@selector(actionOfButton)
     forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem * infoButton = [[UIBarButtonItem alloc] initWithCustomView:someButton];

这段代码将解决您的问题


我已经在Storyboard上创建了一个Bar Button Item。如何将这段代码链接到它上面?我尝试了上面的代码,但它没有起作用。 - Jacob Wood
我需要将infoButton添加到工具栏视图中吗?因为变量infoButton未使用。 - Jacob Wood
@JacobWood 说实话,我不知道如何从接口构建器中完成这个功能,但是我可以用代码帮你。首先,您需要拥有一个UIBarButtonItem数组,您想要添加的所有元素都必须是UIBarButtonItem类型,然后您可以调用此方法填充工具栏:“[self.toolbar setItems:items];” - Güngör Basa
@JacobWood [self.toolbar setItems:items]; 其中 items 是 UIBarButtonItem 的 NSArray。 - Güngör Basa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接