Отображение изображения вместо текста для UIBarButton в StoryBoard - PullRequest
0 голосов
/ 12 декабря 2018

Я создаю ViewController с панелью навигации.В этой панели я добавляю UIBarButton, к которому я добавлю переход, чтобы перейти к другому ViewController.Мне бы хотелось, чтобы эта кнопка была изображением, а не просто текстом, поэтому я попытался перейти в раздел Атрибут атрибутов и изображение к моей кнопке.Результат ужасен: enter image description here

Как вы можете подумать, на этом этапе мне бы хотелось иметь правильное изображение (например, чуть меньше, у меня меньше xcassets, высота 25 пикселей).и ширина).

Мне удалось получить что-то лучшее программно, используя это:

hpSettingsBtn.image = UIImage(named: "settings")

Но все же не то, что я хотел бы.

Есть идеи?

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

class HomePageViewController: UIViewController {
    @IBOutlet weak var hpSettingsBtn: UIBarButtonItem!

    override func viewDidLoad() {
        super.viewDidLoad()
        let button = createSettingsBtn()
        hpSettingsBtn.customView = button
    }

    func createSettingsBtn() -> UIButton {
        //create a new button
        let button = UIButton(type: .custom)
        //set image for button
        button.setImage(UIImage(named: "settings"), for: .normal)
        //set frame
        button.frame = CGRect(x: 0, y: 0, width: 25, height: 25)

        button.widthAnchor.constraint(equalToConstant: 25).isActive = true
        button.heightAnchor.constraint(equalToConstant: 25).isActive = true

        return button
    }

И если я использую этот код, без UIBarButton (создавая его внутри моегосам кодирую и прикрепляю его к панели навигации), тогда я не знаю, возможно ли использовать переход с (поскольку кнопка не отображается на раскадровке).

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Сначала создайте переход от первого viewController до второго viewController и установите идентификатор для этого перехода.

eg : segue1 //segue identifier

затем создайте пользовательскую кнопку

func makeSettingsBtn() {
    //create a new button
    let button = UIButton(type: .custom)
    //set image for button
    button.setImage(UIImage(named: "settings"), for: .normal)
    //set frame
    button.frame = CGRect(x: 0, y: 0, width: 25, height: 25)

    button.widthAnchor.constraint(equalToConstant: 25).isActive = true
    button.heightAnchor.constraint(equalToConstant: 25).isActive = true

    //Add target
    button.addTarget(self, action: #selector(self.btnClick(_:)), for: .touchUpInside)

    let barButton = UIBarButtonItem(customView: button)
    self.navigationItem.rightBarButtonItem = barButton
}

Метод действия кнопки

@objc func btnClick(_ sender:UIButton) {
    self.performSegueWithIdentifier("segue1", sender: self)
}
0 голосов
/ 12 декабря 2018

Вы можете изменить вставку изображения в раскадровке для элемента панели, перейдя на вкладку с видом линейки в раскадровке, как показано на рисунке.Я надеюсь, что это помогает 1]

...