[英]Removing disabled tint on UIButton
我實現了自己的自定義按鈕,效果很好。
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的標題已淡出。 我希望這是與邊框完全相同的顏色。 我如何做到這一點?
使用此行
if (self.isEnabled == false){
:
self.setTitleColor(UIColor.gray, for: .normal)
:
}
else{
:
self.setTitleColor(UIColor.green, for: . disabled)
:
}
現在,您似乎正在直接設置標簽的標題顏色。 盡管此方法有效,但這並不是在使用UIButton時設置標題顏色的最佳方法,因為(如您所遇到的)此屬性可能會根據按鈕的狀態而改變。 相反,您應該使用UIButton的setTitleColor:forState:
方法,該方法可以在按鈕階段更改時對按鈕的樣式和外觀進行更精細的控制: https : //developer.apple.com/reference/uikit/uibutton / 1623993-settitlecolor?language = swift
使用此方法,您可以傳遞控件狀態,例如禁用,突出顯示等: https : //developer.apple.com/reference/uikit/uicontrolstate
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.