Problema adicionar uma imagem à barra de ferramentas usando uibarbuttonitem, exibindo caixa branca em branco em vez de imagem
-
26-09-2019 - |
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];
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 ;-)