I have a custom UIBarButtonItem, consisting of a UIImage and a UILabel. Set up as such:
addUsersButton = UIButton()
barButtonView = UIView()
addUsersImage = UIImageView(image: UIImage(named: "add-users")?.withRenderingMode(.alwaysOriginal))
barButtonView.addSubview(addUsersImage)
addUsersLabel = UILabel()
addUsersLabel.text = "Your Table"
addUsersLabel.font = ._8RobotoMedium
addUsersLabel.textColor = .wayDarkGray
addUsersLabel.textAlignment = .center
barButtonView.addSubview(addUsersLabel)
var space = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
var rightButtonItem = UIBarButtonItem(customView: barButtonView)
rightButtonItem.width = 30
navigationItem.rightBarButtonItem = rightButtonItem
With constraints like this:
addUsersImage.snp.makeConstraints { make in
make.top.centerX.equalToSuperview()
make.height.equalTo(addUsersImageHeight)
make.width.equalTo(addUsersImageWidth)
}
addUsersLabel.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalTo(addUsersImage.snp.bottom).offset(addUsersLabelHeightOffset)
}
however the actual bar button is sunk about half way into the bottom of the navigation item, and bleeds into the view controller's main view.