UIBarButtonItem содержит корзину и нет. предметов - PullRequest
0 голосов
/ 10 апреля 2020

Я боролся с этим часами. Я новичок в 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)

Но значок имеет большой размер, и когда я уменьшаю его, общая сумма корзины снова очень далеко. В обоих случаях исходный актив изображения зеленый, но при построении он приобретает системный синий оттенок. Как мне с этим разобраться?

1 Ответ

0 голосов
/ 10 апреля 2020

Вы действительно пытаетесь заставить очень стандартный iOS UIElement стать чем-то совершенно другим. Вам нужно создать свою собственную кнопку и разместить ее там, где находится элемент правой кнопки. Не делайте это barButtonItem. Просто ваша собственная кнопка.

Вот хороший ответ, показывающий, как это сделать: { ссылка }

...