我已经实现了自己的自定义按钮,效果很好。
import Foundation
import UIKit
class GhostYouButton: UIButton {
required public init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override var isEnabled: Bool {
didSet {
if (self.isEnabled == false) {
self.backgroundColor = UIColor.clear
self.titleLabel?.textColor = Constant.disabledGrayColor
self.tintColor = Constant.disabledGrayColor
self.borderColor = Constant.disabledGrayColor
self.borderWidth = 2
self.cornerRadius = 20
} else {
self.backgroundColor = UIColor.clear
self.titleLabel?.textColor = Constant.mainGreenColor
self.tintColor = Constant.mainGreenColor
self.borderColor = Constant.mainGreenColor
self.borderWidth = 2
self.cornerRadius = 20
}
}
}
}
我将我的GhostYouButton设置为在viewDidLoad()中禁用:
override func viewDidLoad() {
self.nextButton.isEnabled = false
}
所以它变成了灰色,就像我期望的那样:
然而......正如你所看到的,UIButton上的标题已经淡出。我想这是与边框完全相同的颜色。我该如何实现这一目标?
答案 0 :(得分:1)
使用此行
if (self.isEnabled == false){
:
self.setTitleColor(UIColor.gray, for: .normal)
:
}
else{
:
self.setTitleColor(UIColor.green, for: . disabled)
:
}
答案 1 :(得分:0)
现在,您似乎直接设置标签的标题颜色。虽然这很有效,但是当使用UIButton时,它不是设置标题颜色的最佳方式(因为您遇到),此属性可能会根据按钮的状态而改变。相反,您应该使用UIButton的setTitleColor:forState:
方法,当按钮阶段发生变化时,您可以更精细地控制按钮的样式和外观:https://developer.apple.com/reference/uikit/uibutton/1623993-settitlecolor?language=swift
使用此方法,您可以传入控制状态,例如禁用,突出显示等:https://developer.apple.com/reference/uikit/uicontrolstate