将图层样式与Swift

时间:2018-06-16 18:45:24

标签: ios swift swift4

我有这4行为UIButton添加阴影:

option1Label.layer.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.2).cgColor
option1Label.layer.shadowOffset = CGSize(width: 0.0, height: 1.0)
option1Label.layer.shadowOpacity = 1.0
option1Label.layer.shadowRadius = 3.0

但我也有4个不同的按钮,这会导致每个按钮重复一次,只需更改option1Label中的数字。

也许是一个愚蠢的例子,但在CSS中,将相同的样式应用于多个元素看起来像这样:

.element1,
.element2,
.element3 {
    color: #121212;
}

Swift 4中是否有任何方法可以将这4个按钮组合在一起并将它们全部应用到这4个样式中?

更新

更多代码可以查看正在发生的事情。 4个按钮也是IBOutlets,因为它们需要在某个时刻更改文本:

@IBOutlet weak var option1Label: UIButton!
@IBOutlet weak var option2Label: UIButton!
@IBOutlet weak var option3Label: UIButton!
@IBOutlet weak var option4Label: UIButton!

IBAction为:

@IBAction func answerButton(_ sender: UIButton) {
    pickedAnswer = sender.tag
    questionNumber += 1
}

1 个答案:

答案 0 :(得分:1)

你可以子类化UIButton并在那里添加阴影或做类似的事情:

let option1Label = UIButton()
let option2Label = UIButton()
let option3Label = UIButton()
let option4Label = UIButton()

[option1Label, option2Label, option3Label, option4Label].forEach { button in
    button.layer.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.2).cgColor
    button.layer.shadowOffset = CGSize(width: 0.0, height: 1.0)
    button.layer.shadowOpacity = 1.0
    button.layer.shadowRadius = 3.0
}

标签/按钮命名让我感到困惑......:)