2015-12-05 9 views
4

Я хочу установить пользовательские изображения в UIBarButtonItem, но он показывает только прямоугольную рамку и не показывает фактическое изображение.Установить пользовательские изображения в UIBarButtonItem, но он не отображает изображения

func setupBrowserToolbar() { 
    let browser = UIToolbar(frame: CGRect(x: 0, y: 20, width: self.view.frame.width, height: 30)) 
    //配置返回组件 
    let path = NSBundle.mainBundle().pathForResource("back", ofType: "png") 
    let urlstr = NSURL(fileURLWithPath: path!) 
    let data = NSData(contentsOfURL: urlstr) 
    let btnback = UIBarButtonItem(image: UIImage(data: data!), style: UIBarButtonItemStyle.Plain, target: self, action: Selector("backClicked:")) 
    //分割按钮1 
    let btngrap1 = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil) 
    //前进按钮 
    let btnforward = UIBarButtonItem(image: UIImage(named: "forward.png"), style: UIBarButtonItemStyle.Plain, target: self, action: Selector("forwardClicked:")) 
    //分割按钮2 
    let btngrap2 = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil) 
    //重新加载 
    let btnreload = UIBarButtonItem(image: UIImage(named: "reload.png"), style: UIBarButtonItemStyle.Plain, target: self, action: Selector("reloadClicked:")) 
    //分割按钮3 
    let btngrap3 = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil) 
    //停止加载 
    let btnstop = UIBarButtonItem(image: UIImage(named:"stop.png"), style: UIBarButtonItemStyle.Plain, target: self, action: Selector("stopClicked:")) 
    progress = UIProgressView((frame: CGRect(x: 0, y: 48, width: self.view.frame.width-50, height: 2))) 
    progress.progress = 0 
    browser.setItems([btnback, btngrap1, btnforward, btngrap2, btnreload, btngrap3, btnstop], animated: true) 
    ptimer = NSTimer(timeInterval: 0.2, target: self, selector: Selector("loadProgress"), userInfo: nil, repeats: true) 
    self.view.addSubview(browser) 
} 

my app screen shot

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

ответ

1

Это потому, что режим рендеринга изображения по умолчанию UIBarButtonItem всегда рисует изображение как образ шаблона, игнорируя его информацию о цвете (UIImageRenderingModeAlwaysTemplate). Просто создайте свое изображение, используя метод UIImage imageWithRenderingMode всегда оригинал.

UIImage(named: "yourImageName")!.imageWithRenderingMode(.AlwaysOriginal) 
+0

Спасибо вам за вашу помощь, могли бы вы сказать мне, как вы знаете, я не см. эту информацию на официальном сайте описания. – XIAOHANG

+0

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIBarButtonItem_Class/#//apple_ref/occ/instm/UIBarButtonItem/initWithImage:style:target:action: –

+0

http://stackoverflow.com/a/32738254/2303865, вы также должны посмотреть на это –

0

Swift 3, 4 обновление

С быстрым 3, метод изменен на следующий формат

UIImage(named:"yourImageName")!.withRenderingMode(.alwaysOriginal)