【问题标题】:UIButton not highlighting on tap SwiftUIButton在点击Swift时没有突出显示
【发布时间】:2019-11-30 20:40:57
【问题描述】:

简介

我创建了一个按钮并为其添加了子视图/给了它一个自定义外观。

由于子类化按钮很痛苦,我决定在我的视图控制器中这样做(是的,我知道这很糟糕),并为 UIButton 创建了一个扩展,其中样式创建按钮。

按钮如下所示:

我设置子视图如下:

func styleCreateButton(serviceFee: Float) {
        let feeLabel: DefaultLabel = {
            let lbl = DefaultLabel(labelFont: UIFont(name: "MyCustomFont", size: 12)!, labelTextColor: ColorCodes.textSuperLightGray, labelText: "$\(serviceFee) Service Fee")

            return lbl
        }()

        let createLabel: DefaultLabel = {
            let lbl = DefaultLabel(labelFont: UIFont(name: "MyCustomFont", size: 15)!, labelTextColor: .white, labelText: "Create")

            return lbl
        }()

        let arrowRight: UIButton = {
            let btn = UIButton(type: .system)
            btn.setImage(UIImage(named: "left-arrow")?.rotate(radians: CGFloat(180).degreesToRadians).resizedImage(newSize: CGSize(width: 20, height: 20)).withRenderingMode(.alwaysTemplate), for: .normal)
            btn.contentMode = .center
            btn.tintColor = .white

            return btn
        }()

        self.addSubview(feeLabel)
        feeLabel.anchor(top: nil, left: self.leftAnchor, bottom: nil, right: nil, paddingTop: 0, paddingLeft: 16, paddingBottom: 0, paddingRight: 0, width: 0, height: 0)
        feeLabel.sizeToFit()
        feeLabel.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true

        self.addSubview(arrowRight)
        arrowRight.anchor(top: nil, left: nil, bottom: nil, right: self.rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 16, width: 20, height: 20)
        arrowRight.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true

        self.addSubview(createLabel)
        createLabel.anchor(top: nil, left: nil, bottom: nil, right: arrowRight.leftAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 12, width: 0, height: 0)
        createLabel.sizeToFit()
        createLabel.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true
    }

按钮本身声明如下:

private lazy var createButton: UIButton = {
        let btn = UIButton(type: .system)

        btn.backgroundColor = ColorCodes.logoPrimaryColor

        btn.layer.shadowOffset = CGSize(width: 0, height: 5)
        btn.layer.shadowColor = UIColor.black.cgColor
        btn.layer.shadowOpacity = 0.2
        btn.layer.shadowRadius = 5

        return btn
    }()

此外,该按钮有一个目标,我不知道为什么单击时它没有以典型的 iOS 方式突出显示。现在,处理函数被调用,但按钮没有突出显示。

我会很感激任何帮助:)

【问题讨论】:

    标签: ios swift uibutton uikit ios-animations


    【解决方案1】:

    尝试这样做

    class HighlightedButton: UIButton {
        override var isHighlighted: Bool {
            didSet {
                backgroundColor = isHighlighted ? .blue : .white
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-05-20
      • 2015-07-21
      • 2013-07-05
      • 2014-03-10
      • 1970-01-01
      • 2012-02-10
      • 2020-05-06
      • 2013-10-15
      相关资源
      最近更新 更多