ios UIButton子类在单击时更改字体

brccelvz  于 2022-11-19  发布在  iOS
关注(0)|答案(2)|浏览(194)

我看到了一些奇怪的行为,从一个阵列的按钮,我已经建立在故事板。我有4个按钮,每个自定义类型TakesContainerButton,当一个按钮被点击,它改变为系统字体,但当一个不同的按钮被点击,以前的按钮返回到所需的字体,不知道这是怎么回事
这些按钮还嵌入在堆栈视图中(如果这很重要的话
下面是按下其中一个按钮时的实现,其中buttons是4个按钮的数组

@IBAction func filterPressed(_ sender: TakesContainerButton) {
        for button in buttons {
            button.unclick()
        }
        sender.click()
    }

下面是自定义类

class TakesContainerButton: UIButton {

        
        var bottom = UIView()
        
        func click(){
            self.setTitleColor(.darkGray, for: .normal)
            let xOffset:CGFloat = 10
            bottom = UIView(frame: CGRect(x: xOffset / 2, y: self.frame.height - 3, width: self.frame.width - xOffset, height: 3))
            bottom.layer.cornerRadius = 1.5
            bottom.backgroundColor = .darkGray
            self.addSubview(bottom)
        }
        
        func unclick(){
            bottom.removeFromSuperview()
            self.setTitleColor(UIColor(hex: "8B8B8B"), for: .normal)
        }
        
        override func awakeFromNib(){
            setFont()
        }
        
        func setFont(){
            self.titleLabel?.font = UIFont(name: "Lato-Bold", size: 12)
        }
    }
irtuqstp

irtuqstp1#

是否有任何特殊的原因,你调用setFont()的每一次点击。因为我能够看到,你不改变字体,你应该设置这个字体的时候,视图加载,并保持字体。

qvsjd97n

qvsjd97n2#

在StoryBoard中设置按钮:
自定义类型
默认样式和
状态配置为默认值
你应该有这样东西

相关问题