Как я могу сделать пользовательский UIBarButtonItem, чтобы быть высотой его суперпредставления - PullRequest
0 голосов
/ 02 мая 2020

Я хочу создать пользовательский UIBarButtonItem, чтобы иметь больший контроль над расположением кнопок. Но есть проблема - мне нужно установить высоту пользовательского UIBarButtonItem равной его суперпредставлению и IDK, как это сделать.

Кроме того, я не хочу «жестко» устанавливать высоту на какое-то значение, например 44pt Я хочу использовать autolayout.

См. Скриншот:

  1. Левый (по умолчанию UIBarButtonItem) имеет желаемую высоту. Его высота ограничена высотой его суперпредставления <- это то, что я хочу сделать с моим пользовательским UIBarButtonItem. </li>
  2. Правильная (пользовательский UIBarButtonItem) высота его содержимого.

Код Я использую выглядит следующим образом:

// button with an image
let addButton = UIButton(type: .custom)
addButton.setImage(self.addImage, for: .normal)

// stackView
let stackView = UIStackView()
stackView.addArrangedSubview(addButton)

// uibarbuttonitem
let barButton = UIBarButtonItem(customView: stackView)
self.navigationItem.rightBarButtonItem = barButton

enter image description here

Обновление 1:

Я создал такой контейнер и поместил в стек вид , Но это выглядит странно. И есть еще одна проблема - правое поле.

class FullHeightUIView : UIView {
    private var heightConstraint: NSLayoutConstraint! = nil

    override func didMoveToSuperview() {
        super.didMoveToSuperview()

        if let superView = self.superview {
            self.heightConstraint = self.heightAnchor.constraint(equalTo: superView.heightAnchor)
            NSLayoutConstraint.activate([
                self.heightConstraint,
            ])
        } else {
            self.heightConstraint = nil
        }
    }
}
...