簡體   English   中英

UIButton在水龍頭Swift上不突出顯示

[英]UIButton not highlighting on tap Swift

介紹

我創建了一個按鈕並為其添加了子視圖/為其提供了自定義外觀。

由於子類化按鈕非常麻煩,因此我決定在視圖控制器內部進行操作(是的,我知道這很不好),並為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方式突出顯示。 現在,處理程序函數被調用,但是該按鈕未突出顯示。

我將不勝感激任何幫助 :)

嘗試這樣做

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM