2013-04-10 81 views
1

我从一个免费的图标DB一个竖起大拇指的图标下载,它的大小是一个按钮过大,有白色background.I决定在pixelmator打开它调整的图标,移除背景。当用预览打开它时看起来不错,但是当它被设置为xcode中的按钮图像时,它会显示为白色圆圈。图片显示为按钮空白

这里是编辑(30×30 PNG)图标后 enter image description here ,这是它的外观上的按钮enter image description here

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

编辑/ UPADTE: 我试图@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; 

导致再次用白色绘制

所以我想知道:

尝试这个代码是它甚至有可能在工具栏中的彩色按钮?也许我想海啸奇迹......

编辑/ UPADTE 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 

然后在视图控制器类:

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

我希望这将帮助其他人,像我想彩色图像的工具栏中

+0

您需要设置的UIBarButtonItem与customview – yunas 2013-04-10 21:39:30

+0

这是一个的UIBarButtonItem标识符:自定义样式:borderd色彩:默认 – 2013-04-10 21:42:13

+0

预期的行为:“这代表一个项目的正常和高亮状态栏图片来自您设置使用继承的图像导出来自UIBarItem类的图像属性。例如,图像被转换为​​白色,然后通过为正常状态添加阴影来使其倾斜。“http://developer.apple.com/library/ios/#documentation/uikit/reference/UIToolbar_Class/Reference/Reference.html – 2013-04-11 20:58:09

回答

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; 
+0

你还应该将UIButton的'showsTouchWhenHighlighted'属性设置为'YES'。 – rmaddy 2013-04-10 21:46:30

+0

@yunas当然替换了imageName,而不是'self.navigationItem.leftBarButtonItem = customBarItem;'我使用了'self.navigationController。 toolbarItems = @ [customBarItem]'但仍然按钮出来像图片中写圈:( – 2013-04-10 22:22:34

+0

我已经更新了leftbarbuttonitem代码rightbarbuttonitem和你没有做self.navigationcontroller.toolbaritems = @ [custombaritem。请从您的代码 – yunas 2013-04-11 07:04:41