web-dev-qa-db-fra.com

Couleur de bordure UITextField

Je souhaite vraiment définir ma propre couleur pour la bordure UITextField. Mais jusqu’à présent, je n’ai pu découvrir comment modifier le style de la ligne de bordure uniquement.

J'ai utilisé la propriété background pour définir la couleur d'arrière-plan de la manière suivante:

self.textField.backgroundColor = textFieldColor;

Mais je dois aussi changer la couleur de la bordure UITextField. Et ma question portait sur la façon de changer la couleur de la bordure.

121
dasha

Importer QuartzCore framework dans votre classe:

#import <QuartzCore/QuartzCore.h>

et pour changer la couleur de la bordure, utilisez l'extrait de code suivant (je le règle sur redColor),

    textField.layer.cornerRadius=8.0f;
    textField.layer.masksToBounds=YES;
    textField.layer.borderColor=[[UIColor redColor]CGColor];
    textField.layer.borderWidth= 1.0f;

Pour revenir à la mise en page originale, il suffit de définir la couleur de la bordure sur la couleur,

    serverField.layer.borderColor=[[UIColor clearColor]CGColor];

dans Swift code

    textField.layer.borderWidth = 1
    textField.layer.borderColor = UIColor.whiteColor().CGColor
267
Gary

Essaye ça:

UITextField *theTextFiels=[[UITextField alloc]initWithFrame:CGRectMake(40, 40, 150, 30)];
    theTextFiels.borderStyle=UITextBorderStyleNone;
    theTextFiels.layer.cornerRadius=8.0f;
    theTextFiels.layer.masksToBounds=YES;
        theTextFiels.backgroundColor=[UIColor redColor];
    theTextFiels.layer.borderColor=[[UIColor blackColor]CGColor];
    theTextFiels.layer.borderWidth= 1.0f;

    [self.view addSubview:theTextFiels];
    [theTextFiels release];

et importer QuartzCore:

#import <QuartzCore/QuartzCore.h>
20
iOSPawan

Importez la classe suivante:

#import <QuartzCore/QuartzCore.h> 

// Code permettant de définir la couleur grise pour la bordure du champ de texte

[[textField layer] setBorderColor:[[UIColor colorWithRed:171.0/255.0
                                                   green:171.0/255.0
                                                    blue:171.0/255.0
                                                   alpha:1.0] CGColor]];

Remplacer 171.0 avec le numéro de couleur correspondant, selon les besoins.

17
james lobo

cette question apparaît assez haut sur une recherche Google et a fonctionné pour la plupart! J'ai trouvé que la réponse de Salman Zaidi était partiellement correcte pour iOS 7.

Vous devez apporter une modification au code "de retour". J'ai trouvé que ce qui suit pour revenir fonctionnait parfaitement:

textField.layer.cornerRadius = 0.0f;
textField.layer.masksToBounds = YES;
textField.layer.borderColor = [[UIColor blackColor] CGColor];
textField.layer.borderWidth = 0.0f;

Je comprends que cela est probablement dû aux modifications apportées à iOS 7.

12
Jovin_

Pour simplifier ces actions à partir d'une réponse acceptée, vous pouvez également créer Catégorie pour UIView (car cela fonctionne pour toutes les sous-classes de UIView, pas seulement pour les champs de texte:

IView + Additions.h:

#import <Foundation/Foundation.h>

@interface UIView (Additions)
- (void)setBorderForColor:(UIColor *)color 
                    width:(float)width 
                   radius:(float)radius;
@end

IView + Additions.m:

#import "UIView+Additions.h"

@implementation UIView (Additions)

- (void)setBorderForColor:(UIColor *)color 
                    width:(float)width
                   radius:(float)radius
{
    self.layer.cornerRadius = radius;
    self.layer.masksToBounds = YES;
    self.layer.borderColor = [color CGColor];
    self.layer.borderWidth = width;
}

@end

tilisation:

#import "UIView+Additions.h"
//...
[textField setBorderForColor:[UIColor redColor]
                       width:1.0f
                      radius:8.0f];
10
skywinder

Si vous utilisez un TextField avec des coins arrondis, utilisez ce code:

    self.TextField.layer.cornerRadius=8.0f;
    self.TextField.layer.masksToBounds=YES;
    self.TextField.layer.borderColor=[[UIColor redColor]CGColor];
    self.TextField.layer.borderWidth= 1.0f;

Pour supprimer la bordure:

self.TextField.layer.masksToBounds=NO;
self.TextField.layer.borderColor=[[UIColor clearColor]CGColor];
7
Stefan Liesendahl

borderColor sur n'importe quelle vue (ou sous-classe UIView) peut également être défini à l'aide d'un scénario avec un peu de codage. Cette approche peut s'avérer très pratique si vous définissez la couleur de la bordure sur plusieurs objets de l'interface utilisateur.

Voici les étapes à suivre pour y parvenir,

  1. Créez une catégorie sur la classe CALayer. Déclarez une propriété de type IColor avec un nom approprié, je l'appellerai ainsi borderUIColor.
  2. Ecrivez le passeur et le getter pour cette propriété.
  3. Dans la méthode 'Setter', définissez simplement la propriété "borderColor" du calque sur la nouvelle valeur CGColor de couleurs.
  4. Dans la méthode 'Getter', renvoyez UIColor avec borderColor.

P.S: N'oubliez pas que les catégories ne peuvent pas avoir de propriétés stockées. 'borderUIColor' est utilisé comme propriété calculée, juste comme référence pour réaliser ce sur quoi nous nous concentrons.

S'il vous plaît jeter un oeil à l'exemple de code ci-dessous;

Objectif C:

Fichier d'interface:

#import <QuartzCore/QuartzCore.h>
#import <UIKit/UIKit.h>

@interface CALayer (BorderProperties)

// This assigns a CGColor to borderColor.
@property (nonatomic, assign) UIColor* borderUIColor;

@end

Fichier d'implémentation:

#import "CALayer+BorderProperties.h"

@implementation CALayer (BorderProperties)

- (void)setBorderUIColor:(UIColor *)color {
    self.borderColor = color.CGColor;
}

- (UIColor *)borderUIColor {
    return [UIColor colorWithCGColor:self.borderColor];
}

@end

Swift 2.0:

extension CALayer {
var borderUIColor: UIColor {
    set {
        self.borderColor = newValue.CGColor
    }

    get {
        return UIColor(CGColor: self.borderColor!)
    }
}
}

Et enfin, allez sur votre storyboard/XIB, suivez les étapes restantes;

  1. Cliquez sur l'objet Voir pour lequel vous souhaitez définir une couleur de bordure.
  2. Cliquez sur "Inspecteur d'identité" (3ème à gauche) dans le panneau "Utilitaire" (côté droit de l'écran).
  3. Sous "Attributs d'exécution définis par l'utilisateur", cliquez sur le bouton "+" pour ajouter un chemin d'accès à la clé.
  4. Définissez le type de chemin de clé sur "Couleur".
  5. Entrez la valeur du chemin de clé sous "layer.borderUIColor". [Rappelez-vous que cela devrait être le nom de la variable que vous avez déclaré dans la catégorie, pas borderColor voici borderUIColor].
  6. Enfin, choisissez la couleur de votre choix.

Vous devez définir la valeur de la propriété layer.borderWidth sur au moins 1 pour afficher la couleur de la bordure.

Construire et exécuter. Bonne codage. :)

4
Rameswar Prasad

Mise à jour pour Swift 5.0

textField.layer.masksToBounds = true
textField.layer.borderColor = UIColor.blue.cgColor
textField.layer.borderWidth = 1.0
1
Hugo Jordao