Я боролся с этим часами. Я новичок в Swift, поэтому все, что я хочу сделать, это добавить изображение корзины покупок и строку в .rightBarButtonItem, и я не могу его получить. Пока у меня есть это:
let cartIcon = UIBarButtonItem(image: UIImage(named: "shopping_cart_icon"), style: .plain, target: self, action: #selector(didTapCart(_:)))
let cartTotal = UIBarButtonItem(title: "\(cart_total)", style: .plain, target: self, action: #selector(didTapCart(_:)))
navigationItem.rightBarButtonItems = [cartIcon, cartTotal]
Но с этим моя иконка и номер на расстоянии 50px! Я также попытался создать пользовательский UIView, используя это:
let view = UIView()
let button = UIButton(type: .system)
button.layer.shadowRadius = 5.0
// autolayout solution
button.translatesAutoresizingMaskIntoConstraints = false
button.widthAnchor.constraint(equalToConstant: 40).isActive = true
button.heightAnchor.constraint(equalToConstant: 40).isActive = true
button.semanticContentAttribute = .forceRightToLeft
button.setImage(UIImage(named: "shopping_cart"), for: .normal)
button.setTitle("\(cartItemArray.count)", for: .normal)
//button.addTarget(self, action: #selector(openDocuments), for: .touchUpInside)
button.sizeToFit()
view.addSubview(button)
view.frame = button.bounds
navigationItem.rightBarButtonItem = UIBarButtonItem(customView: view)
Но значок имеет большой размер, и когда я уменьшаю его, общая сумма корзины снова очень далеко. В обоих случаях исходный актив изображения зеленый, но при построении он приобретает системный синий оттенок. Как мне с этим разобраться?