我看到了一些奇怪的行为,从一个阵列的按钮,我已经建立在故事板。我有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)
}
}
2条答案
按热度按时间irtuqstp1#
是否有任何特殊的原因,你调用setFont()的每一次点击。因为我能够看到,你不改变字体,你应该设置这个字体的时候,视图加载,并保持字体。
qvsjd97n2#
在StoryBoard中设置按钮:
自定义类型
默认样式和
状态配置为默认值
你应该有这样东西