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.
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
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>
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.
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.
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];
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];
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,
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;
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. :)
Mise à jour pour Swift 5.0
textField.layer.masksToBounds = true
textField.layer.borderColor = UIColor.blue.cgColor
textField.layer.borderWidth = 1.0