У меня есть простой подкласс UIButton
class IconButton: UIButton {
init(type: FontAwesomeStyle, icon: FontAwesome, color: UIColor = .black, size: CGFloat = 20) {
super.init(frame: CGRect.zero)
let iconAsText = String.fontAwesomeIcon(name: icon)
let iconText = NSMutableAttributedString(string: iconAsText, attributes: [
NSAttributedString.Key.font: UIFont.fontAwesome(ofSize: size, style: type)
])
setAttributedTitle(iconText, for: .normal)
setTitleColor(color, for: .normal)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Проблема, с которой я столкнулся, заключается в том, что я хотел бы, чтобы кнопка имела поведение, аналогичное системным кнопкам. В частности, когда вы нажимаете и удерживаете кнопку, она меняет цвет.
let button = UIButton(type: .system)
Поскольку buttonType
является свойством UIButton только для получения, а UIButton.init(type: UIButton.ButtonType)
является вспомогательным инициализатором, я не уверен, как это реализовать подкласс.