Это слишком простая вещь.Вы можете попробовать следующие способы:
Непосредственно с помощью UIBarButtonItem
:
let leftBarButtonItem = UIBarButtonItem(image: UIImage(named: "icon_2"), style: UIBarButtonItem.Style.plain, target: self, action: #selector(rightBtnClicked(_:)))
leftBarButtonItem.imageInsets = UIEdgeInsets(top: 10, left: 15, bottom: 0, right: 0)
leftBarButtonItem.tintColor = .red
self.navigationItem.setRightBarButton(leftBarButtonItem, animated: true)
ИЛИ С помощью пользовательской кнопки:
let rightButton = UIButton(type: UIButton.ButtonType.system)
rightButton.backgroundColor = .clear
rightButton.tintColor = .red
rightButton.frame = CGRect(origin: CGPoint(x: 10, y: 10), size: CGSize(width: 40, height: 40))
//rightButton.frame = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: 40, height: 40))
//rightButton.imageEdgeInsets = UIEdgeInsets(top: 10, left: 15, bottom: 0, right: 0)
//rightButton.contentVerticalAlignment = .bottom
rightButton.setImage(UIImage(named: "icon_1"), for: UIControl.State.normal)
rightButton.addTarget(self, action: #selector(rightBtnClicked(_:)), for: UIControl.Event.touchUpInside)
let btnView = UIView(frame: CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: 50, height: 50)))
btnView.backgroundColor = .clear
btnView.addSubview(rightButton)
let barBtn = UIBarButtonItem(customView: btnView)
self.navigationItem.setRightBarButton(barBtn, animated: true)