更改自定义文本字段的背景颜色和文本颜色 IOS Swift

14

我正在使用以下自定义文本字段类来更改文本字段的外观。现在,当用户开始编辑和结束编辑文本字段时,我需要更改文本字段的背景颜色、文本颜色和占位符颜色。如何使用这个类来实现。

import Foundation
import UIKit

class CustomTextField: UITextField{

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        //Border
        self.layer.cornerRadius = 15.0;
        self.layer.borderWidth = 1.5
        self.layer.borderColor = UIColor.whiteColor().CGColor

        //Background
        self.backgroundColor = UIColor(white: 1, alpha: 0.0)

        //Text
        self.textColor = UIColor.whiteColor()
        self.textAlignment = NSTextAlignment.Center
    }

}
5个回答

10

在您的CustomTextField类中,您可以添加属性观察器:

var change: Bool = false {
    didSet {
        textColor = change ? .yellow : .black
        backgroundColor = change ? .blue : .white
    }
}

并且在你的 ViewController 中:

func textFieldDidBeginEditing(textField: UITextField) {
    customTextField.change = true
}

func textFieldDidEndEditing(textField: UITextField) {
    customTextField.change = false
}

不要忘记在storyboard或编程中为您的textfield设置委托。

编辑:
缩短了代码并升级到Swift 3


1
在backgroundColor那一行,白色前面缺少一个点。 应该是: backgroundColor = change ? .blue : .white - lucadb

5

根据文档,将自己添加为所需的UIControl事件的目标。

在那里,您可以控制EditingDidBegin等事件。

类似这样:

self.addTarget(self, action: "myFunc", forControlEvents: UIControlEvents.EditingDidBegin);

这个方法帮助我做到了我想做的事情。谢谢。 - Arvin Jayanake

1
选择文本字段 -> 点击 "身份检查器" 图标 -> 点击加号按钮 "用户定义的运行时属性" -> 在 "键路径" 字段中添加此文本 "_placeholderLabel.textColor" -> 选择 "类型" "颜色" 并设置值颜色。请仔细查看图片

0

@objc func myfunc( _ textfield : UITextField) {

@objc func myfunc( _ textfield : UITextField) {

    textfield.backgroundColor = Helper.UIColorFromRGB(0xFFF1F3)
    
}
@objc func myfunc1( _ textfield : UITextField) {
    
    textfield.layer.borderColor = Helper.UIColorFromRGB(0xFF4D67) as! CGColor
    
    textfield.backgroundColor = Helper.UIColorFromRGB(0xFAFAFA)
}


func textfieldBackgroundColor( _ textfield : UITextField) {
    
    textfield.addTarget(self, action: #selector(myfunc), for: UIControl.Event.editingDidBegin)
    textfield.addTarget(self, action: #selector(myfunc1), for: UIControl.Event.editingDidEnd)

    
    
}

0

被接受的答案的代码已经过时。

旧代码:

self.addTarget(self, action: #selector(func), forControlEvents: UIControlEvents.EditingDidBegin)

'UIControlEvents.EditingDidBegin' 被修改为 'UIControl.Event.editingDidBegin'
新代码:
nameTF.addTarget(self, action: #selector(func), for: UIControl.Event.editingDidBegin)
nameTF.addTarget(self, action: #selector(func), for: UIControl.Event.editingDidEnd)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接