簡體   English   中英

刪除UIButton上的禁用色調

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM