Problema adicionar uma imagem à barra de ferramentas usando uibarbuttonitem, exibindo caixa branca em branco em vez de imagem

StackOverflow https://stackoverflow.com/questions/4028927

Pergunta

Não tenho certeza do que estou fazendo de errado. O nome do arquivo está correto, o estilo está definido como planejado. Mas estou recebendo uma caixa branca do banco do tamanho da minha imagem. Estou usando o UinavigationController.

Por favor, ajude e obrigado, obrigado antecipadamente.

** FYI Eu sou meio novo para objetivos c, então não seja muito duro comigo. ;)

 UIBarButtonItem *toolbarChannelGuideButton = [[UIBarButtonItem alloc]
     initWithImage:[UIImage imageNamed:@"channel-guide-button.png"]
     style:UIBarButtonItemStylePlain
     target:self
     action:@selector(action:)];


self.toolbarItems = [NSArray arrayWithObjects:toolbarChannelGuideButton, nil];
[toolbarChannelGuideButton release];
Foi útil?

Solução

A razão pela qual estava criando a máscara branca foi porque o UIToolBar não permite imagens coloridas por padrão. A maneira de conseguir isso é criar um UIImage Em seguida, atribua um UIButton para essa imagem. Em seguida, crie um UIBarButton usando initWithCustomView com o UIButton como visualização personalizada.

Código:

     //Load the image   
     UIImage *buttonImage = [UIImage imageNamed:@"your-image.png"];

     //create the button and assign the image
     UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
     [button setImage:buttonImage forState:UIControlStateNormal];

     //sets the frame of the button to the size of the image
     button.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height);

     //creates a UIBarButtonItem with the button as a custom view
     UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:button];



     self.toolbarItems = [NSArray arrayWithObjects:customBarItem, nil];
     [customBarItem release];

Outras dicas

Começando com o iOS 7, você pode usar abaixo:

 UIImage *image = [[UIImage imageNamed:@"myImage.png"];
 imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
 UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:self action:@selector(YOUR_METHOD:)];

Channel-guide-button.png pertence ao Project?

Você pode quebrar isso assim:

UIImage *image = [UIImage imageNamed:@"channel-guide-button.png"];
NSLog(@" image = %p", image);
UIBarButtonItem *toolbarChannelGuideButton = [[UIBarButtonItem alloc]
     initWithImage:image
     style:UIBarButtonItemStylePlain
     target:self
     action:@selector(action:)];

ou apenas verifique seu projeto ;-)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top