【问题标题】:bar button item image is turning to white icon even if its black栏按钮项目图像变为白色图标,即使它是黑色的
【发布时间】:2013-01-06 11:01:25
【问题描述】:

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

http://www.bladmuziekplus.nl/shop/files/images/icon_home.png
但是背景图像即使是黑色也会自动转换为白色。

我尝试通过代码设置图像背景,但仍然变成白色。

手动:我已将上面的图像拖放到项目中。我选择了条形按钮项目,并在右侧栏(盾牌图标)上的第 4 个选项选择不同的色调,并在条形按钮下拉图像设置为上图。

以编程方式:

  [self.homeButton setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor blackColor], UITextAttributeTextColor,nil] forState:UIControlStateNormal];

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

我该如何解决?
提前致谢。

.

【问题讨论】:

  • 您需要发布代码或屏幕截图,了解如何在工具栏中添加按钮
  • @R.A 我已经编辑了这个问题。
  • 你为什么不试试这个。只需拖放一个 uibutton 并在情节提要本身中添加一个图像,然后将其添加到 uibarbuttonitem 只需拖放自身并向 uibutton 添加一个操作方法即可满足您的需求..在情节提要本身中尝试。除了按钮的操作方法之外,不需要任何代码

标签: ios ios5 ios6 uibarbuttonitem


【解决方案1】:

这是将图像添加到UIButton 并将UIButton 作为custom view 添加到UIBarButtonItem 中的storyboard 本身的分步过程。我将为您添加一些图像完全理解这一点..

步骤 1:toolbar 拖放到 storyboard 视图中

第 2 步:UIButton 拖放到您的view

第 3 步:将图片拖放到您的UIButton

步骤 4:UIButton 拖放到工具栏中,现在您可以在右侧将其添加到 UIBarButtonItem 内。现在您只需为您的按钮连接一个操作方法。

【讨论】:

  • 我已经尝试过相同的方法,但现在将图像放置为背景图标而不是图标即使它的黑色变成了白色。
  • 以上方法无法自定义
  • 或者如果是,那么如何。我尝试添加代码但它仍然不起作用
  • 我以为你问的是如何将它添加到情节提要中……没关系……两者的工作方式相同。
  • 是否可以将情节提要栏按钮项链接到代码并通过代码向该按钮添加自定义?例如:button.addBackgroundImage=something 的插座名称。
【解决方案2】:

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]];

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;

}

【讨论】:

    【解决方案3】:

    这是正常行为,您可以在人机界面指南中阅读。

    http://developer.apple.com/library/ios/documentation/userexperience/conceptual/mobilehig/IconsImages/IconsImages.html#//apple_ref/doc/uid/TP40006556-CH14-SW8

    如果你想改变,你需要编写自己的子类。

    【讨论】:

    • 那么我应该怎么做才能保持与项目中保存的图像相同。在这种情况下是黑色的。请告诉我该怎么做?我还是一头雾水。
    • 这应该对你有帮助:stackoverflow.com/questions/3431961/…
    • 我已经在情节提要上创建了一个条形按钮项目。如何将此代码链接到该项目。我尝试了上面的代码,但它不起作用
    • 要从情节提要中访问条形按钮项,您需要在视图控制器中添加一个 IBOutlet 属性并链接它。完全在代码中初始化和添加条形按钮可能会更好,因为如果您使用情节提要,您将获得一个已经初始化的对象。确保使用 initWithCustomView:
    • 我已经创建了条形按钮项目并且在情节提要上,我可以将此代码添加到创建的项目中吗?基本上我是如何将按钮链接到按钮功能的,在这种情况下是图像背景。
    【解决方案4】:
    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];
    

    此代码将解决您的问题

    【讨论】:

    • 我已经在情节提要上创建了一个条形按钮项目。如何将此代码链接到该项目。我尝试了上面的代码,但它不起作用。
    • 我需要将 infoButton 添加到工具栏视图吗?因为变量 infoButton id 未使用
    • @JacobWood 老实说,我不知道如何从界面生成器中做到这一点,但我可以帮助你编写代码。首先,您需要有一个要添加的 UIBarButtonItem 数组。所有元素都必须是 UIBarButonItem 才能调用此方法来填充工具栏。 "[self.toolbar setItems:items];"
    • @JacobWood [self.toolbar setItems:items]; items 是 UIBarButtonItem 的 NSArray
    猜你喜欢
    • 2015-02-21
    • 2019-02-24
    • 2021-04-28
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多