В моем случае
изменить рамку элемента barbuttonItem для настройки пробелов
Добавить, удалить barButtonItems динамически.
изменение цвета оттенка в зависимости от содержимого tableviewOffset.y
как это
![enter image description here](https://i.stack.imgur.com/7KFRn.png)
![enter image description here](https://i.stack.imgur.com/POnlk.png)
Если ваша минимальная цель - iOS 11, вы можете изменить кадры barButton в viewDidLayoutSubviews
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
// Change the navigationBar item frames
if let customView = wishButton.customView?.superview {
customView.transform = CGAffineTransform(translationX: 7.0, y: 0)
}
if let customView = gourmetCountButton.customView?.superview {
customView.transform = CGAffineTransform(translationX: 9.0, y: 0)
}
}
Но это работает только на iOS 11.
Я также пытался использовать fixedSpace. Но он не работал в нескольких элементах навигационной панели.
let space = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
space.width = -10
Итак, я изменил ширину customView для настройки горизонтального пространства.
Это один из моих классов barButtonItem
final class DetailShareBarButtonItem: UIBarButtonItem {
// MARK: - Value
// MARK: Public
***// Change the width to adjust space***
let button = UIButton(frame: CGRect(x: 0, y: 0, width: 32.0, height: 30.0))
override var tintColor: UIColor? {
didSet {
button.tintColor = tintColor
}
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setButton()
}
required override init() {
super.init()
setButton()
}
// MARK: - Function
// MARK: Private
private func setButton() {
// Button
button.setImage( #imageLiteral(resourceName: "navibarIcShare02White").withRenderingMode(.alwaysTemplate), for: .normal)
button.tintColor = .white
button.imageEdgeInsets = UIEdgeInsetsMake(0, 1.0, 1.0, 0)
button.imageView?.contentMode = .scaleAspectFill
let containerView = UIView(frame: button.bounds)
containerView.backgroundColor = .clear
containerView.addSubview(button)
customView = containerView
}
}
Это результат.
Я тестировал на iOS 9 ~ 11, (Swift 4)
![enter image description here](https://i.stack.imgur.com/yhUBu.png)