UIBarButtonItem вертикальное выравнивание в UIToolbar - PullRequest
0 голосов
/ 20 апреля 2019

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

Я пытался создать пользовательскую кнопку UIB и установить там ширину / высоту, но она также, похоже, не меняет размер кнопки даже с .scaleAspectFit.

Вот код пользовательской кнопки:


 let barCameraButton = UIButton(type: .custom)

        barCameraButton.frame = CGRect(x: 0, y: 0, width: 90, height: 90)
        barCameraButton.setImage(UIImage(named: "camera"), for: .normal)
        barCameraButton.imageView?.contentMode = .scaleAspectFit

        //let cameraButton = UIBarButtonItem(barButtonSystemItem: .camera, target: self, action: #selector(takeScreenshot))

        let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 0, height: 100))

        let item = UIBarButtonItem(customView: barCameraButton)
        toolbar.setItems([item], animated: true)
        toolbar.barTintColor = .black
        toolbar.tintColor = .white

Вот мой оригинальный код (что я хотел бы использовать):

  let cameraButton = UIBarButtonItem(barButtonSystemItem: .camera, target: self, action: #selector(takeScreenshot))

        let flexibleSpaceFiller = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
        let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(completedTask))
        let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 0, height: 100))
        toolbar.setItems([cameraButton,flexibleSpaceFiller,doneButton], animated: true)
        toolbar.barTintColor = UIColor.black
        toolbar.tintColor = UIColor.white


        view.addSubview(toolbar)


        toolbar.translatesAutoresizingMaskIntoConstraints = false
        toolbar.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor, constant: 0).isActive = true
        toolbar.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor, constant: 0).isActive = true
        toolbar.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: 0).isActive = true
        toolbar.heightAnchor.constraint(equalToConstant: 100).isActive = true

Я ожидаю, что когда я изменю ограничение, чтобы сделать бар выше, значки будут выровнены по горизонтали. Что происходит, так это то, что кнопка камеры, кажется, остается в центре панели, гибкое пространство невидимо, а кнопка «Готово» говорит внизу - поэтому значки почему-то смещаются на панели по какой-то причине. Выложенное изображение является крайним примером высоты панели инструментов, но я считаю, что оно показывает то, что я вижу.

изображение WebView

...