Изображение UIBarButtonItem остается синим, а не оригинальным цветом изображения?

Почему значок info.png остается синим и не совпадает с исходным цветом этого изображения? Я использую следующий код ниже:

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"info.png"]
                                                                             style:UIBarButtonItemStylePlain
                                                                            target:self
                                                                            action:@selector(info:)];

Ответы

Ответ 1

По умолчанию изображение в элементах строки бара UINavigationBar отображается с использованием режима шаблона. Вы можете установить его на оригинал.

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"info.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
                                                                         style:UIBarButtonItemStylePlain
                                                                        target:self
                                                                        action:@selector(info:)];

Ответ 2

Swift 3:

    let image : UIImage? = UIImage.init(named: "heart.png")!.withRenderingMode(.alwaysOriginal)

Ответ 3

Для Swift 2.1+ это будет выглядеть так:

    let image : UIImage? = UIImage(named:"myImage.png")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)

или просто

    let image : UIImage? = UIImage(named:"myImage.png")!.imageWithRenderingMode(.AlwaysOriginal)

Ответ 4

Вы можете это и из активов. Перейдите в Assets.xcassets → Выберите изображение, которое используется как изображение элемента barbutton. Нажмите на инспектора атрибутов в правой боковой панели. Выберите рендеринг для изображения. Он будет использоваться по умолчанию ранее. Теперь вы увидите цветное изображение.

Ответ 5

Поскольку цвет barButtonItems в вашем приложении связан с свойством tintColor в окне приложения.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window.tintColor = [UIColor redColor];
    return YES;
}

Ответ 6

Свифт 4:

let image = UIImage(named: "imageName")?.withRenderingMode(.alwaysOriginal)
navigationItem.leftBarButtonItem = UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(leftBarButtonPressed))

Ответ 7

Хорошо, получилось... Сначала я установил изображение в исходное состояние.

UIImage *image = [[UIImage imageNamed:@"info.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:image
                                                                             style:UIBarButtonItemStylePlain
                                                                            target:self
                                                                            action:@selector(info:)];

Ответ 8

Измените цвет оттенка элемента панели с помощью раскадровки. Или цвет из изображения в раскадровке.

Цвет должен быть вашим ожидаемым цветом как hex или rgb.

Ответ 9

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

используя XCode Перейдите к Активам --Select Image --- отметьте Render as и выберите Original image вместо свойства по умолчанию.

enter image description here