首页 > 解决方案 > UIButton 图像不可点击

问题描述

我正在尝试将 Image 添加到我的 MDCRaisedButton 中,这是MaterialComponents来自Google的 UIButton 的扩展类。我可以将图像添加到按钮,但图像不可点击。我都尝试过添加UITapGestureRecognizeraddTarget但问题仍然存在。事实是图像本身是不可点击的,但是如果我单击图像下方和上方剩余的按钮的较小部分,则会执行按钮的单击操作。这有什么问题?下面是我的按钮代码

        btnCalibrate = MDCRaisedButton()
        btnCalibrate?.setImage(UIImage(named: "chip"), for: .normal)
        btnCalibrate?.backgroundColor = UIColor(netHex: Constants.color)
        btnCalibrate?.layer.cornerRadius = 40.0
        btnCalibrate?.imageEdgeInsets=UIEdgeInsets(top: 5, left: 2, bottom: 5, right: 2)
        btnCalibrate?.imageView?.contentMode = .scaleAspectFit
        btnCalibrate?.isUserInteractionEnabled=true

        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(recalibrateFromImageView(_:)))
        btnCalibrate?.addGestureRecognizer(tapGesture)

        btnCalibrate?.translatesAutoresizingMaskIntoConstraints=false
        //btnCalibrate?.addTarget(self, action: #selector(recalibrate(_:)), for: [.touchUpInside])

        self.addSubview(btnCalibrate!)

我也尝试将手势识别器添加到imageView中,UIButton但这也不起作用。

图像当前以居中显示。如果我单击几乎不可单击的按钮的其他可见部分。我该如何处理?

标签: iosswiftuibuttonmaterial-designmaterial-components-ios

解决方案


尝试

let plusImage = UIImage(named: "chip").withRenderingMode(.alwaysTemplate)
btnCalibrate.setImage(plusImage, for: .normal)

或者

let plusImage = UIImage(named: "chip").withRenderingMode(.alwaysTemplate)
btnCalibrate.setBackgroundImage(plusImage, for: .normal)

推荐阅读