web-dev-qa-db-fra.com

UITextView avec bordure

Je veux avoir une fine bordure grise autour de UITextView. J'ai parcouru la documentation Apple, mais je n'ai trouvé aucun bien là-bas. S'il vous plaît aider.

118
Ali
#import <QuartzCore/QuartzCore.h>

....

// typically inside of the -(void) viewDidLoad method
self.yourUITextView.layer.borderWidth = 5.0f;
self.yourUITextView.layer.borderColor = [[UIColor grayColor] CGColor];

Ajoutez ce qui suit pour les coins arrondis:

self.yourUITextview.layer.cornerRadius = 8; 
42
user542584

Voici le code que j'ai utilisé pour ajouter une bordure autour de mon contrôle TextView nommé "tbComments":

self.tbComments.layer.borderColor = [[UIColor grayColor] CGColor];
self.tbComments.layer.borderWidth = 1.0;
self.tbComments.layer.cornerRadius = 8;

Et voici à quoi ça ressemble:

enter image description here

Peasy facile.

20
Mike Gledhill

J'ajoute UIImageView en tant que sous-vue de UITextView. Cela correspond à la bordure native sur une UITextField, y compris le dégradé de haut en bas:

enter image description here

textView.backgroundColor = [UIColor clearColor];
UIImageView *borderView = [[UIImageView alloc] initWithFrame: CGRectMake(0, 0, textView.frame.size.width, textView.frame.size.height)];
borderView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
UIImage *textFieldImage = [[UIImage imageNamed:@"TextField.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(15, 8, 15, 8)];
borderView.image = textFieldImage;
[textField addSubview: borderView];
[textField sendSubviewToBack: borderView];

Ce sont les images png que j'utilise et une représentation jpg:

@1 fois

@ 2x

enter image description here

19
Ben Packard

Fonctionne très bien, mais la couleur doit être une CGColor, pas UIColor:

view.layer.borderWidth = 5.0f;
view.layer.borderColor = [[UIColor grayColor] CGColor];
18
Matt Connolly

pour la programmation rapide, utilisez cette

tv_comment.layer.borderWidth = 2
tv_comment.layer.borderColor = UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1).CGColor
4
Sruit A.Suk

c'est aussi proche que possible d'un UITextField original

func updateBodyTextViewUI() {
    let borderColor = UIColor.init(red: 212/255, green: 212/255, blue: 212/255, alpha: 0.5)

    self.bodyTextView.layer.borderColor = borderColor.CGColor
    self.bodyTextView.layer.borderWidth = 0.8
    self.bodyTextView.layer.cornerRadius = 5
}
2
Matias Elorriaga

Je crois que les réponses ci-dessus concernent les versions précédentes de Swift. J'ai googlé un peu et le code ci-dessous fonctionne pour Swift 4. Il suffit de le partager à qui de droit.

self.textViewName.layer.borderColor = UIColor.lightGray.cgColor
self.textViewName.layer.borderWidth = 1.0;
self.textViewName.layer.cornerRadius = 8;

Bon codage!

1
IronmanX46

Juste un petit ajout. Si vous élargissez légèrement la bordure, cela gênera les côtés gauche et droit du texte. Pour éviter cela, j'ai ajouté la ligne suivante:

self.someTextView.textContainerInset = UIEdgeInsetsMake(8.0, 8.0, 8.0, 8.0);
0
Sloba

La chose qui a fait le travail (en plus de suivre les réponses ici) est l’ajout de l’attribut borderStyle:

#import <QuartzCore/QuartzCore.h>
..

phoneTextField.layer.borderWidth = 1.0f;
phoneTextField.layer.borderColor = [[UIColor blueColor] CGColor];
phoneTextField.borderStyle = UITextBorderStyleNone;
0
abbood

Depuis iOS 8 et Xcode 6, je trouve maintenant que la meilleure solution consiste à sous-classer UITextView et à marquer la sous-classe en tant que IB_DESIGNABLE, ce qui vous permettra d'afficher la bordure dans le storyboard.

Entête:

#import <UIKit/UIKit.h>

IB_DESIGNABLE

@interface BorderTextView : UITextView

@end

La mise en oeuvre:

#import "BorderTextView.h"

@implementation BorderTextView

- (void)drawRect:(CGRect)rect
{
    self.layer.borderWidth = 1.0;
    self.layer.borderColor = [UIColor blackColor].CGColor;
    self.layer.cornerRadius = 5.0f;
}

@end

Ensuite, faites glisser votre UITextView dans le storyboard et définissez sa classe sur BorderTextView

0
mike

Dans Swift 3, vous pouvez utiliser les deux lignes suivantes:

myText.layer.borderColor = UIColor.lightGray.cgColor

myText.layer.borderWidth = 1.0
0
Amr Angry