Подтвердить что ты не робот

Цвет кнопки кнопки панели навигации отличается при проектировании через xib xcode5

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

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

Here is my orignal image

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

Aafter adding that image on navigation bar

4b9b3361

Ответ 1

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

Objective-C:

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

Swift:

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

Swift 3:

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

Ответ 2

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

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;

Ответ 3

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

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

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

enter image description here

Ответ 5

Вам также нужно установить цвет оттенка - который работал на меня - Вы можете сгенерировать 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;