1

我从一个免费的图标数据库下载了一个大拇指图标,它的大小对于按钮来说太大了,而且它有白色背景。我决定在 pixelmator 中打开它,调整了图标的大小并删除了背景。当用预览打开它时,它看起来很棒,但是当它设置为 xcode 中的按钮图像时,它显示为一个白色圆圈。

这是编辑后的图标(30x30 png) 在此处输入图像描述 ,这是它在按钮上的外观在此处输入图像描述

我应该怎么做才能解决这个问题?

编辑/更新: 我尝试了@yunas 代码,它在导航栏中有效,不适用于工具栏(甚至没有显示按钮)。

尝试此代码:

UIImage* image = [UIImage imageNamed:@"imageName"];
UIBarButtonItem *likeBtn = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:self action:@selector(action_clicked:)];
NSArray* toolbarItems = [NSArray arrayWithObjects:likeBtn,nil];
self.toolbarItems = toolbarItems;
self.navigationController.toolbarHidden = NO;

再次导致一个带有白色绘图的按钮

所以我想知道:工具栏中是否有可能有彩色按钮?也许我正在尝试不可能的事情......

编辑/更新 II - 解决方案:将 UIButton 包装在 UIBarButtonItem 内

@interface StatusUIBarButtonItem : UIBarButtonItem
- (id) initWithStatus: (enum StatusEnum)p_statusEnum;
@end

@implementation StatusUIBarButtonItem
- (instancetype)initWithStatus:(enum StatusEnum)p_statusEnum
{
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setImage:[self getStatusImage] forState:UIControlStateNormal];
    [button addTarget:self action:@selector(status_Clicked:) forControlEvents:UIControlEventTouchUpInside];
    [button setFrame:CGRectMake(0, 0, 20, 20)];

    self = [super initWithCustomView:button];
    if (self) 
    {
        self.statusButton = button;
    }
    return self;
}

@end

然后在 ViewController 类中:

-(void) viewDidLoad
{  
    StatusUIBarButtonItem* stausBtn = [[StatusUIBarButtonItem alloc]  initWithStatus:self.status];
    NSArray* toolbarItems = [NSArray arrayWithObjects: stausBtn, nil];
    self.toolbarItems = toolbarItems;
    self.navigationController.toolbarHidden = NO;
}

我希望这会帮助像我一样想要工具栏中的彩色图像的其他人

4

1 回答 1

1
    UIImage *buttonImage = [UIImage imageNamed:@"imageName.png"];
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setImage:buttonImage forState:UIControlStateNormal];
    button.adjustsImageWhenDisabled = NO;
    button.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height);
    [button addTarget:self action:@selector(action:) forControlEvents:UIControlEventTouchUpInside];

   UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:button];
   self.navigationItem.rightBarButtonItem = customBarItem;
于 2013-04-10T21:44:08.020 回答