web-dev-qa-db-fra.com

Modifier la couleur d'arrière-plan et la couleur du texte des champs de texte personnalisés IOS Rapide

J'utilise la classe de champ de texte personnalisée suivante pour modifier l'apparence du champ de texte. Maintenant, je dois changer la couleur d'arrière-plan, la couleur du texte et la couleur de l'espace réservé au champ de texte, lorsque l'utilisateur commence à éditer et termine l'édition du champ de texte. Comment le faire, en utilisant cette classe.

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
    }

}
11
Arvin Jayanake

Ajoutez self en tant que cible pour les événements UIControl dont vous avez besoin selon documentation

Là vous avez des événements de contrôle pour EditingDidBegin et autres.

Quelque chose comme ça:

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

Dans votre classe CustomTextField, vous pouvez ajouter un observateur de propriété:

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

et dans votre ViewController:

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

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

N'oubliez pas de définir le délégué de votre champ de texte, dans le storyboard ou par programme.

MODIFIER:
Raccourci le code et mis à jour pour Swift 3

10
Eendje

Sélectionnez le champ de texte -> cliquez sur l'icône "inspecteur d'identité" -> cliquez sur le bouton Plus "attributs définis par l'utilisateur pour l'exécution" -> ajoutez ce texte "_placeholderLabel.textColor" dans le champ "chemin d'accès" -> choisissez la couleur "Type" et définir la valeur color.  Please check the images in detail

1
HafizAnser