使UIBarButtonItem透明iOS 7/8

时间:2014-11-14 11:43:25

标签: ios uibarbuttonitem

我知道有很多关于这个主题的问题/答案,但找不到合适的答案。 我以编程方式构建UIBar。我自己的按钮(png with transparancy)正在进行反向填充,而不是显示背景槽。

系统UIBarButton的工作完美,但不是我自己的。

工作的:

UIBarButtonItem *exportButton = [[UIBarButtonItem alloc]
  initWithBarButtonSystemItem:UIBarButtonSystemItemAction 
                       target:self                                                                                                    
                       action:@selector(tapExportButton:)];

不起作用:

UIBarButtonItem *favButton = [[UIBarButtonItem alloc] 
                initWithImage:[UIImage 
                   imageNamed:@"FavoriteStar"] 
                        style:UIBarButtonItemStylePlain 
                       target:self 
                       action:@selector(toggleFavorite:)];

png的内部在我的gfx编辑器中是透明的

the inner of the star (png) is transparent

当我将它用作UIBarButtonItem时,内部部分是黑色的,但不是背景图片......

the inner part is shown black

我该怎样做才能让它变得透明?

此致

Jeroen Wolff

1 个答案:

答案 0 :(得分:0)

我正在修改您的代码以便更好地理解

UIBarButtonItem *favButton = [[UIBarButtonItem alloc] 
            initWithImage:[UIImage 
               imageNamed:@"FavoriteStar"] 
                    style:UIBarButtonItemStylePlain 
                   target:self 
                   action:@selector(toggleFavorite:)];

以下是需要注意的一些要点:  1.导航栏应该是透明的。  2.使用透明背景的PNG文件(质量更好)。  3.您也可以使用以下代码作为参考

    UIButton *btnBack=[UIButton buttonWithType:UIButtonTypeCustom];
btnBack.frame=CGRectMake(0, 29.5, 38, 25);
[btnBack setBackgroundImage:[UIImage imageNamed:@"btn_back.png"] forState:UIControlStateNormal];
[btnBack setBackgroundImage:[UIImage imageNamed:@"btn_backSelected.png"] forState:UIControlStateHighlighted];
[btnBack addTarget:self action:@selector(btnbackClicked:) forControlEvents:UIControlEventTouchDown];
UIBarButtonItem *barbutton=[[UIBarButtonItem alloc]initWithCustomView:btnBack];
[barbutton setStyle:UIBarButtonItemStyleBordered];


self.navigationItem.leftBarButtonItem=barbutton;

我使用自定义按钮作为条形按钮。

我真的很想听听你的意见。如果有效,请告诉我。