Я хочу создать пользовательский UIBarButtonItem, чтобы иметь больший контроль над расположением кнопок. Но есть проблема - мне нужно установить высоту пользовательского UIBarButtonItem равной его суперпредставлению и IDK, как это сделать.
Кроме того, я не хочу «жестко» устанавливать высоту на какое-то значение, например 44pt Я хочу использовать autolayout.
См. Скриншот:
- Левый (по умолчанию UIBarButtonItem) имеет желаемую высоту. Его высота ограничена высотой его суперпредставления <- это то, что я хочу сделать с моим пользовательским UIBarButtonItem. </li>
- Правильная (пользовательский 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
Обновление 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
}
}
}