Изображение 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]()