web-dev-qa-db-fra.com

Comment définir la bordure de UITextView sur Identique à la couleur de bordure de UITextField

Par défaut, UITextField a pour couleur de bordure la couleur gris clair . Je souhaite que mon UITextView ait la même couleur de bordure que UITextField.

J'ai essayé:

myTextView.layer.borderColor = UIColor.lightGrayColor().CGColor
or
myTextView.layer.borderColor = UIColor.lightTextColor().CGColor
or 
myTextView.layer.borderColor = myTextField.layer.borderColor

Ils doivent encore avoir une couleur différente. Pouvez-vous me dire comment afficher la bordure UITextView afin qu'elle corresponde à la couleur UITextField?

Je vous remercie.

36
n179911

Essayez ce code.

UIColor *borderColor = [UIColor colorWithRed:204.0/255.0 green:204.0/255.0 blue:204.0/255.0 alpha:1.0];

myTextView.layer.borderColor = borderColor.CGColor;
myTextView.layer.borderWidth = 1.0;
myTextView.layer.cornerRadius = 5.0;

changez la valeur de borderWidth et de cornerRadius pour obtenir l’interface utilisateur exacte en tant que UITextField. 

57
Deepak

Ce code Swift fonctionne également pour définir les mêmes couleur, largeur et rayon de bordure que UITextField:

myTextView.layer.borderColor = UIColor(red: 0.9, green: 0.9, blue: 0.9, alpha: 1.0).CGColor
myTextView.layer.borderWidth = 1.0
myTextView.layer.cornerRadius = 5
27
Aks

J'avais cette question similaire pour iOS 10 et je n'ai pas pu trouver de réponse, mais c'est ce que j'ai trouvé en utilisant le colorimètre numérique dans Utilitaires et le simulateur iOS.

Swift 3/iOS 10

let color = UIColor(red: 186/255, green: 186/255, blue: 186/255, alpha: 1.0).cgColor
myTextView.layer.borderColor = color
myTextView.layer.borderWidth = 0.5
myTextView.layer.cornerRadius = 5
14
Jason Brady

Swift 4.x/ios11.

J'ai fait une autre mesure de PSD en utilisant un simulateur ... Je peux confirmer le rayon est 0.5 et la couleur est 0.8, comme 205/255 = 0.8 (ou "cdcdcd" en HEX, comme le suggère PSD, MAIS la largeur doit être 0.5 . (J'ai joint un fichier PSD où vous pouvez comparer le rayon du champ d'édition (UITExtField) ET le rayon appliqué à un UITextView.

Donc c'est correct:

    let borderGray = UIColor(red: 0.8, green: 0.8, blue: 0.8, alpha: 1)
    self.TxtV.layer.borderColor = borderGray.cgColor
    self.TxtV.layer.borderWidth = 0.5
    self.TxtV.layer.cornerRadius = 5

Remarque: j’ai déjà essayé d’obtenir la couleur d’un TextField dans View, mais j’ai eu:

si laissez borderGray = self.cellPhoneTxt.layer.borderColor { laisser BG = UIColor (cgColor: borderGray)

    print(BG)
    var red: CGFloat = 0
    var green: CGFloat = 0
    var blue: CGFloat = 0
    var alpha: CGFloat = 0
    BG.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
    print(red, green, blue, alpha)

}

mais je suis en console:

kCGColorSpaceModelRGB 0 0 0 1 

0,0 0,0 0,0 1,0

il semble donc qu'Apple utilise le noir ET certains Alpha.

 enter image description here

6
ingconti

Essayez ce code pour Swift

let borderColor = UIColor.whiteColor.Cgcolor()

myTextView.layer.borderColor = borderColor.CGColor;
myTextView.layer.borderWidth = 1.0;
myTextView.layer.cornerRadius = 5.0;
3
Gaurav

La couleur exacte est:

Objectif c:

[UIColor colorWithRed:0.76 green:0.76 blue:0.76 alpha:1.0].CGColor;

Rapide:

UIColor(red:0.76, green:0.76, blue:0.76, alpha:1.0).CGColor
2
Tom

Pour une solution générique tout au long du projet. Vous pouvez externaliser la classe UIView et y ajouter ces méthodes. 

-(void)setBorderColor:(UIColor *)borderColor{
    self.layer.borderColor = (borderColor).CGColor;
}
-(UIColor*)borderColor{
    return [UIColor colorWithCGColor: self.layer.borderColor];
}

//Getter and setter for border width
-(void)setBorderWidth:(NSInteger)borderWidth{
    self.layer.borderWidth = borderWidth;
}
-(NSInteger)borderWidth{
    return  (NSInteger)roundf((self.layer.borderWidth));
}

Son une extension de UIView. Ajoutez simplement ces fichiers UIView + Designable.h/m dans votre projet et vous pourrez voir les multiples options supplémentaires dans l'inspecteur d'attributs. 

0
Mubeen Qazi