2016-11-24 2 views
1

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

enter image description here

Следующий код не дает любые ошибки, но ничего не отображается на панели навигации.

import UIKit 
import Foundation 
class UICipNavigationController: UINavigationController { 

override func viewDidLoad() { 
    super.viewDidLoad() 


    // Add BPT LOGO as UIBarButton 
    let logoBPT = UIImage(named: "Logo BPT")?.withRenderingMode(.alwaysOriginal) 

    let logoBPTBarButton = UIBarButtonItem(image: logoBPT, style: .plain, target: nil, action: nil) 
    self.navigationItem.rightBarButtonItem = logoBPTBarButton 


} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

} 

.

import UIKit 

class UICipNavigationBar: UINavigationBar { 

override init(frame: CGRect){ 
    super.init(frame: frame) 

} 

required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder)! 

    self.tintColor = UIColor.white 

    self.setBackgroundImage(UIImage.fromColor(color: UIColorFromHex(rgbValue: 0xffffff, alpha: 0.2)), for: UIBarMetrics.default) 
    self.shadowImage = UIImage() 
    self.isTranslucent = true 
    self.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white, NSFontAttributeName: UIFont(name: "Lato-Regular", size: 24)!] 

} 

override func sizeThatFits(_ size: CGSize) -> CGSize { 
    let newSize :CGSize = CGSize(width: self.superview!.bounds.size.width, height: 60) 
    return newSize 
} 

} 

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

enter image description here

+0

попробовать это .. может быть работает для вас http://stackoverflow.com/questions/30022780/uibarbuttonitem-in-navigation-bar-programmatically/ 30022852 # 30022852 –

+0

Просто попробовал, но мне не повезло. Код всегда переопределяет раскадровку? – USSliberty

+0

ваш код работает отлично. может быть, ваш файл изображения не существует?. я не понимаю.why является белым пространством в вашем файле образа изображения 'Logo BPT' – Joe

ответ

-1
let button = UIButton.init(type: .custom) 
    button.setImage(UIImage.init(named: "menu"), for: UIControlState.normal) 
    button.frame = CGRect.init(x: 0, y: 0, width: 25, height: 17) 
    let barButton = UIBarButtonItem.init(customView: button) 
    self.navigationItem.rightBarButtonItem = barButton 
+1

Это тот же метод http://stackoverflow.com/questions/40781380/insert-right-button-image-in-uinavigationcontroller-with-swift-3/40781752#comment68785841_40781380 – USSliberty

-1

Пожалуйста, обратитесь ниже код.

let button: UIButton = UIButton (type: UIButtonType.Custom) 
button.setImage(UIImage(named: "emojiImage"), forState: UIControlState.Normal) 
//button.addTarget(self, action: "emojiImageButtonPressed:", forControlEvents: UIControlEvents.TouchUpInside) 
button.frame = CGRectMake(0, 0, 30, 30) 
let barButton = UIBarButtonItem(customView: button) 

self.navigationItem.rightBarButtonItem = barButton 

Убедитесь, что ваше изображение должно быть простым (прозрачным) фоном.

Если вы хотите щелкнуть событие, тогда раскомментируйте button.addTarget(self, action: "emojiImageButtonPressed:", forControlEvents: UIControlEvents.TouchUpInside) и поставьте ниже функцию для вызова.

func emojiImageButtonPressed(btn : UIButton) { 

    print("emojiImageButtonPressed") 
} 
0

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

2

Примечание:Image name/file/extention является sensitive.When вы установив barButtonImage Убеждайтесь вам настройки их правильно. Я оцениваю файл изображения с asset catalog (32pt).

let myimage = UIImage(named: "YourImageFileName")?.withRenderingMode(.alwaysOriginal) 
navigationItem.rightBarButtonItem = UIBarButtonItem(image: myimage, style: .plain, target: self, action: #selector(ButtonTapped)) 


func ButtonTapped() { 
print("Button Tapped") 
} 

Выход:updated

enter image description here

Метод 2: Testing Purpose

Примечание: установить название в качестве иконки Emoji из Xcode. запустить проект и посмотреть, что работает?

navigationItem.rightBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: self, action: #selector(ButtonTapped)) 

    func ButtonTapped() { 
    print("Button Tapped") 
    } 

Выход:

enter image description here

+0

Вы сделали все это без добавления кнопок из раскадровки? – USSliberty

Смежные вопросы