2014-01-21 5 views
22

Моя проблема заключается в том, что я создаю кнопку навигационной панели с помощью xib, но когда я собираюсь установить изображение на кнопку бара, тогда цвет изображения отличается как изображение orignal.Навигационная панель кнопка цвет изображения отличается при проектировании через xib xcode5

Это мое изображение orignal.

Here is my orignal image

И после того, добавив, что изображение на навигационной панели кнопок элемента, чем это выглядит, как этот

Aafter adding that image on navigation bar

+1

вы проверены на оттенок цвета и альфа этого элемента? –

+0

Пожалуйста, добавьте код! –

+0

@Vision Я добавляю кнопку бара с помощью xib не запрограммировано во время добавления в xib его отображения цвета orignal, но при запуске на моем iPhone его цвет отличается тем, что показан на изображениях выше. –

ответ

58

Во-первых, я согласен с @ Комментарий Десденовой.
Два изображения не выглядят одинаково, у каждого есть прямые углы прямого угла для каждой линии, а другие округлены.
Убедитесь, что вы используете правильный файл изображения.
Если это так, устрашающе, проблема решена без отклонения от вашей реализации xib. Если нет, просто сделайте это программно (согласно коду @shankars).
Но другая вещь, чтобы отметить, я столкнулся с проблемами настройки пользовательских файлов изображений на кнопки, где изображение становится отстроить ... обязательно используйте UIImageRenderingModeAlwaysOriginal при настройке изображений на кнопку:

Objective-C :

[button setImage:[[UIImage imageNamed:@"imageName.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal]; 

Свифта:

someBarButtonItem.image = UIImage(named: "yourPictureName")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) 

Swift 3:

someBarButtonItem.image = UIImage(named:"myImage")?.withRenderingMode(.alwaysOriginal) 
+0

, спасибо вам обоим. У меня есть дубликат изображения с именем меню, а второй - меню @ 2x. Когда я удалил второй, он работает для меня. –

+0

@ Даниэль Маккарти. Идеальный ответ ... Отлично. –

+0

ой! черт возьми, всегда. просто сделайте его оригинальным уже – fullMoon

6

Поскольку ios7 раскадровки имеют проблемы я столкнулся, чтобы исправить, как показано ниже. установить оттенок цвета в качестве цвета изображения он работает

enter image description here

+0

спасибо, что я пробовал это раньше, но это не мое решение. Я решаю свой пробл, удаляя дублирующее изображение. –

+0

это лучшее решение, потому что он не упоминает писать код –

8

Вы можете создавать кнопки навигации бар программно вместо прямого раскадровки, это не повлияет на первоначальный цвет изображения

self.navigationItem.leftBarButtonItem=[self backButton]; 

- (UIBarButtonItem *)backButton 
{ 
    UIImage *image = [UIImage imageNamed:@"image.png"]; 
    CGRect buttonFrame = CGRectMake(0, 0, image.size.width, image.size.height); 

    UIButton *button = [[UIButton alloc] initWithFrame:buttonFrame]; 
    //[button addTarget:self action:@selector(backButtonPressed) forControlEvents:UIControlEventTouchUpInside]; 
    [button setImage:image forState:UIControlStateNormal]; 

    UIBarButtonItem *item= [[UIBarButtonItem alloc] initWithCustomView:button]; 

    return item; 
} 
4

Вам необходимо установить оттенок цвета, а также - который работал для меня - Вы можете создавать UIBarButtonItem с помощью кода следующим образом:

#define setTurqoiseColor [UIColor colorWithRed:68.0f/255.0f green:181.0f/255.0f blue:223.0f/255.0f alpha:1.0] 

UIBarButtonItem *menuButton = [[UIBarButtonItem alloc] initWithImage:buttonImage style:UIBarButtonItemStyleBordered target:self action:@selector(toggleMenu)]; 
menuButton.tintColor = setTurqoiseColor; 
+0

за предоставленное время –

12

Это пример рабочий код

UIImage *myImage = [UIImage imageNamed:@"myImageFile.png"]; 
myImage = [myImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 
UIBarButtonItem *menuButton = [[UIBarButtonItem alloc] initWithImage:myImage style:UIBarButtonItemStylePlain target:self action:@selector(menuObject:)]; 
self.navigationItem.leftBarButtonItem = menuButton; 
+0

Это простейшее решение. Спасибо! – fahrulazmi

0

Надеюсь, я не слишком поздно добавлять ответ самостоятельно, но в Assets.xcassets вы можете нажать на свое изображение и в инспекторе атрибутов, под Рендар Как установить его исходного изображения

enter image description here