UITextField border color

j'ai vraiment très envie de mettre ma propre couleur à UITextField border. Mais jusqu'à présent je n'ai pu trouver comment changer le style de la frontière que.

j'ai utilisé la propriété background pour définir la couleur de fond de cette façon:

self.textField.backgroundColor = textFieldColor;

mais je dois changer la couleur de UITextField border aussi. Et ma question était de savoir comment changer la couleur de la bordure.

113
demandé sur ColinE 2009-12-07 20:30:48

7 réponses

Importer QuartzCore cadre de en vous de la classe:

#import <QuartzCore/QuartzCore.h>

et pour changer la couleur de la bordure utilisez l'extrait de code suivant (je le mets à redColor),

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

pour revenir à la disposition d'origine il suffit de définir la couleur de bordure pour effacer la couleur,

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

en code swift

    textField.layer.borderWidth = 1
    textField.layer.borderColor = UIColor.whiteColor().CGColor
262
répondu Gary 2015-09-29 08:09:12

essayez ceci:

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 importation QuartzCore:

#import <QuartzCore/QuartzCore.h>
19
répondu iOSPawan 2013-05-07 07:17:47

importer la classe suivante:

#import <QuartzCore/QuartzCore.h> 

/ / Code pour définir la couleur grise de 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 par le numéro de couleur correspondant selon les besoins.

16
répondu james lobo 2014-01-31 05:43:35

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 faire une modification au code" reverting". J'ai trouvé que le suivant pour la réversion a fonctionné 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 très probablement dû à des changements dans iOS 7.

12
répondu Jovin_ 2014-06-10 03:30:39

pour simplifier ces actions de réponse acceptée, vous pouvez aussi créer catégorie pour UIView (puisque cela fonctionne pour toutes les sous-classes D'UIView, pas seulement pour les champs de texte:

Uivi+Additions.h:

#import <Foundation/Foundation.h>

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

Uivi+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

Utilisation:

#import "UIView+Additions.h"
//...
[textField setBorderForColor:[UIColor redColor]
                       width:1.0f
                      radius:8.0f];
10
répondu skywinder 2014-06-04 07:08:02

si vous utilisez un champ de texte 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 frontière:

self.TextField.layer.masksToBounds=NO;
self.TextField.layer.borderColor=[[UIColor clearColor]CGColor];
7
répondu Stefan Liesendahl 2017-07-07 11:00:56

borderColor sur n'importe quelle vue(ou sous-classe uivi) pourrait également être réglé en utilisant storyboard avec un peu de codage et cette approche pourrait être vraiment pratique si vous mettez la couleur de bordure sur plusieurs objets UI.

ci-dessous les étapes pour y parvenir,

  1. créer une catégorie sur la classe CALayer. Déclarer une propriété de type UIColor avec un nom approprié, Je l'appellerai borderUIColor .
  2. écrivez le setter et le getter pour cette propriété.
  3. dans la méthode' Setter 'vient de définir la propriété" borderColor " de la couche à la nouvelle valeur de couleurs CGColor.
  4. dans la méthode' Getter ' retourner UIColor avec borderColor de la couche.

P. S: rappelez-vous, les catégories ne peuvent pas avoir des propriétés stockées. 'borderUIColor" est une propriété calculée, comme une référence à atteindre ce sur quoi nous nous concentrons.

Veuillez consulter ci-dessous l'exemple de code;

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

La Mise En Œuvre De Fichier:

#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 aller à votre storyboard / XIB, suivre les autres étapes;

  1. cliquez sur l'objet View pour lequel vous souhaitez définir la couleur de bordure.
  2. cliquez sur"Identity Inspector "(3e à partir de la gauche) dans le panneau"Utility" (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 de clé.
  4. définit le type de chemin de la Clé À"couleur".
  5. entrez la valeur pour chemin de clé comme "couche.borderUIColor". [Rappelez-vous que cela devrait être le nom de variable vous avez déclaré dans la catégorie, pas borderColor ici, c'est borderUIColor ].
  6. a finalement choisi la couleur que vous voulez.

vous devez définir la couche .borderWidth valeur de la propriété à au moins 1 pour voir la couleur de la frontière.

Build and Run. Heureux De Codage. :)

4
répondu Rameswar Prasad 2015-12-14 19:56:50