gpt4 book ai didi

ios - 角标(Badge)上方的栏按钮使其无法点击后

转载 作者:行者123 更新时间:2023-11-30 11:04:31 29 4
gpt4 key购买 nike

我在栏按钮上创建了一个角标(Badge),如下所示,以便显示购物车中的商品数量。

SSBadgeButton 类

class SSBadgeButton: UIButton {

var badgeLabel = UILabel()

var badge: String? {

didSet {
addBadgeToButon(badge: badge)
}
}

public var badgeBackgroundColor = UIColor.red {
didSet {
badgeLabel.backgroundColor = badgeBackgroundColor
}
}

public var badgeTextColor = UIColor.white {
didSet {
badgeLabel.textColor = badgeTextColor
}
}

public var badgeFont = UIFont.systemFont(ofSize: 12.0) {
didSet {
badgeLabel.font = badgeFont
}
}

public var badgeEdgeInsets: UIEdgeInsets? {
didSet {
addBadgeToButon(badge: badge)
}
}

override init(frame: CGRect) {
super.init(frame: frame)
addBadgeToButon(badge: nil)
}

func addBadgeToButon(badge: String?) {
badgeLabel.text = badge
badgeLabel.textColor = badgeTextColor
badgeLabel.backgroundColor = badgeBackgroundColor
badgeLabel.font = badgeFont
badgeLabel.sizeToFit()
badgeLabel.textAlignment = .center
let badgeSize = badgeLabel.frame.size

let height = max(18, Double(badgeSize.height) + 5.0)
let width = max(height, Double(badgeSize.width) + 10.0)

var vertical: Double?, horizontal: Double?
if let badgeInset = self.badgeEdgeInsets {
vertical = Double(badgeInset.top) - Double(badgeInset.bottom)
horizontal = Double(badgeInset.left) - Double(badgeInset.right)

let x = (Double(bounds.size.width) - 10 + horizontal!)
let y = -(Double(badgeSize.height) / 2) - 10 + vertical!
badgeLabel.frame = CGRect(x: x, y: y, width: width, height: height)
} else {
let x = self.frame.width - CGFloat((width / 2.0))
let y = CGFloat(-(height / 2.0))
badgeLabel.frame = CGRect(x: x, y: y, width: CGFloat(width), height: CGFloat(height))
}

badgeLabel.layer.cornerRadius = badgeLabel.frame.height/2
badgeLabel.layer.masksToBounds = true
addSubview(badgeLabel)
badgeLabel.isHidden = badge != nil ? false : true
}

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.addBadgeToButon(badge: nil)
fatalError("init(coder:) has not been implemented")
}
}

内部 View Controller :

func addBadge(itemvalue: String) {

let bagButton = SSBadgeButton()
bagButton.frame = CGRect(x: 0, y: 0, width: 44, height: 44)
bagButton.tintColor = UIColor.darkGray
bagButton.setImage(UIImage(named: "ShoppingBag")?.withRenderingMode(.alwaysTemplate), for: .normal)
bagButton.badgeEdgeInsets = UIEdgeInsets(top: 20, left: 0, bottom: 0, right: 15)
bagButton.badge = itemvalue
bagButton.isUserInteractionEnabled = true
self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: bagButton)
}

使用角标(Badge)功能:

        self.addBadge(itemvalue: data[0]["total_products_in_cart"].stringValue)

但是添加此角标(Badge)后,栏按钮项目将变得无法点击。控制不进入按钮操作方法内部。为了使按钮可点击,这里应该做什么。

最佳答案

请检查 View Controller 的父 View 上的 UITapGestureRecognizer。如果存在删除了点击手势,这使得 UIBarButtonItems 开始正确响应所有选择器。

关于ios - 角标(Badge)上方的栏按钮使其无法点击后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52874748/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com