5

Im не уверен, что я делаю неправильно. Имя файла верное, стиль установлен равным. Но я получаю белый ящик банка размером с мой образ. Я использую UINavigationController.Проблема с добавлением изображения на панель инструментов с использованием UIBarButtonItem, отображающая пустое поле вместо изображения

Пожалуйста, помогите и благодарим вас за внимание.

** FYI Я новичок в объективе c, поэтому не слишком сильно на меня. ;)

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]; 

ответ

9

Причина, по которой создавал белую маску было, потому что UIToolBar оленья кожа позволяют цветные изображения на него по умолчанию. Для этого нужно создать UIImage, а затем присвоить этому изображению UIButton. Затем создайте UIBarButton, используя initWithCustomView с UIButton как пользовательский вид.

Код:

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

спасибо! Это отлично сработало ... – manderson

+0

UIButtonTypeCustom исправил это для меня. Я использовал roundedrect one – coolcool1994

-1

Содержит ли channel-guide-button.png проект?

Вы можете разбить это вот так:

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:)]; 

или просто проверить свой проект ;-)

+0

Я проверил в моем проекте и да его там. Я также запустил NSLog, где отобразился номер низкого уровня. –

+0

image = 0x6b45340 - то, что он отобразил в консоли –

+0

О, хорошо. FWIW, я обычно создаю UIBarButtonItem с initWithCustomView: и передаю в UIButton с изображением, связанным с ним. Завтра отправлю пример кода. – westsider

1

Начиная с прошивкой 7 вы можете использовать ниже:

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