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

Изображение кнопки панели навигации

Я использую этот код, чтобы получить логотип в моем навигационном баре.

override func viewDidAppear(animated: Bool) {

    let image = UIImage(named: "LogoWithTextSmaller.png")
    self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: image, style: UIBarButtonItemStyle.Plain, target: nil, action: nil)
    }

Это хорошо, но логотип не имеет цвета - кроме "синего". Это потому, что это png файл. Есть ли что-то, что я могу, чтобы сохранить оригинальные цвета.

Я сделал это:

self.navigationItem.titleView = UIImageView(image: image)

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

4b9b3361

Ответ 1

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

var image = UIImage(named: "image-name")
image = image?.withRenderingMode(.alwaysOriginal)
self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: image, style:.plain, target: nil, action: nil)

Ответ 2

В Swift 3 это будет выполнено с использованием следующего синтаксиса

var image = UIImage(named: "Filter")
image = image?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
self.navigationItem.rightBarButtonItem = UIBarButtonItem(image:image , style: UIBarButtonItemStyle.plain, target: nil, action: nil)

Ответ 3

Swift 3.0

let btnLogo = UIButton(frame: CGRect(x: 0, y: 0, width: 25, height: 25))
btnLogo.setTitle("", for: .normal)
btnLogo.backgroundColor = UIColor.clear
btnLogo.layer.cornerRadius = 4.0
btnLogo.layer.masksToBounds = true

var imageLogo = UIImage(named: "LogoWithTextSmaller.png")
imageLogo = imageLogo?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
btnLogo.setImage(imageLogo, for: .normal)

let barButton = UIBarButtonItem(customView: btnLogo)
self.navigationItem.leftBarButtonItem = barButton

swift 2.0

var image = UIImage(named: "Filter")
image = image?.imageWithRenderingMode(UIImageRenderingMode.alwaysOriginal)

Objective-C

 UIImage *image = [[UIImage alloc] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

 UIBarButtonItem *_btnLeftBar = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"LogoWithTextSmaller.png"]
                                                      style:UIBarButtonItemStylePlain
                                                     target:self
                                                     action:@selector(yourMethod)];

 self.navigationItem.rightBarButtonItem= _btnLeftBar;

Для параметра withRenderingMode (_:) подробнее см. ссылку на документацию к яблоку https://developer.apple.com/documentation/uikit/uiimage/1624153-withrenderingmode

Ответ 4

В быстрой версии 3.0

    let Navigateimage = UIImage(named: "LogoWithTextSmaller.png")
    Navigateimage = image?.withRenderingMode(.alwaysOriginal)
    self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: Navigateimage, style:.plain, target: nil, action: nil)