簡體   English   中英

阻止UILabel文本顏色更改,以覆蓋swift中的占位符文本顏色更改

[英]Prevent UILabel text color change from overriding placeholder text color change in swift

我正在嘗試對iOS應用進行全局顏色更改。 我遇到了一個問題, UILabel.appearance().textColor更改傳播到UITextField占位符文本。 我在這個問題上看到的解決方案涉及設置屬性字符串或挖掘到UITextField的私有成員。 如何全局更改UILabel文本顏色的顏色以及文本字段上的占位符文本? 我已經嘗試了下面的代碼,但我最終得到了所有綠色文本。

UILabel.appearance().textColor = UIColor.greenColor()

// UITextField placeholder color
UILabel.appearanceWhenContainedInInstancesOfClasses([UITextField.self]).textColor = UIColor.cyanColor()

無法使用UIAppearance指定占位符文本顏色。 (只有通過UI_APPEARANCE_SELECTOR聲明的屬性UI_APPEARANCE_SELECTOR可用。)最安全的選擇是使用UITextField子類; 這是一個在Interface Builder中使顏色可管理的方法。

@IBDesignable class PCTextField: UITextField {
    @IBInspectable var placeholderColor: UIColor = UIColor.redColor() {
        didSet {
            if let placeholder = self.placeholder {
                let colorAttribute = [NSForegroundColorAttributeName: placeholderColor]
                attributedPlaceholder = NSAttributedString(string: placeholder, attributes: colorAttribute)
            }
        }
    }
}

如果您在代碼中進行顏色更改,則從NSUserDefaults設置中分配placeholderColor將非常適合基於UIAppearance的管理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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