Réponses:
#import <QuartzCore/QuartzCore.h>
....
// typically inside of the -(void) viewDidLoad method
self.yourUITextView.layer.borderWidth = 5.0f;
self.yourUITextView.layer.borderColor = [[UIColor grayColor] CGColor];
self.myView.layer.borderWidth ...
, mais comme je l'ai dit, la couche est en lecture seule, donc la couche n'a aucune méthode ou variable à définir
Ajoutez ce qui suit pour les coins arrondis:
self.yourUITextview.layer.cornerRadius = 8;
Voici le code que j'ai utilisé, pour ajouter une bordure autour de mon TextView
contrôle nommé "tbComments":
self.tbComments.layer.borderColor = [[UIColor grayColor] CGColor];
self.tbComments.layer.borderWidth = 1.0;
self.tbComments.layer.cornerRadius = 8;
Et voici à quoi cela ressemble:
Peasy facile.
J'ajoute UIImageView
comme sous-vue du UITextView
. Cela correspond à la bordure native sur a UITextField
, y compris le dégradé de haut en bas:
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];
Voici les images png que j'utilise et une représentation jpg:
code
resizableImageWithCapInsets: UIEdgeInsetsMake (28, 14, 28, 14)
Fonctionne très bien, mais la couleur doit être a CGColor
, pas UIColor
:
view.layer.borderWidth = 5.0f;
view.layer.borderColor = [[UIColor grayColor] CGColor];
Je pense que les réponses ci-dessus concernent les versions précédentes de Swift. J'ai un peu googlé et le code ci-dessous fonctionne pour Swift 4. Il suffit de le partager pour qui en profite.
self.textViewName.layer.borderColor = UIColor.lightGray.cgColor
self.textViewName.layer.borderWidth = 1.0
self.textViewName.layer.cornerRadius = 8
Bon codage!
self.textViewName.layer.borderColor = UIColor.systemGray4.cgColor
pour la programmation Swift, utilisez ceci
tv_comment.layer.borderWidth = 2
tv_comment.layer.borderColor = UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1).CGColor
UIColor(white: 0.2, alpha: 1).CGColor
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
}
vous pouvez ajouter une bordure à UITextView à partir du Storyboard - Identity Inspector - Attribut d'exécution défini par l'utilisateur
Depuis iOS 8 et Xcode 6, je trouve maintenant que la meilleure solution est de sous-classer UITextView et de marquer la sous-classe comme IB_DESIGNABLE, ce qui vous permettra de visualiser 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 simplement glisser votre UITextView dans le storyboard et définissez sa classe sur BorderTextView
La chose qui l'a fait fonctionner (en plus de suivre les réponses ici) est l'ajout de l' borderStyle
attribut:
#import <QuartzCore/QuartzCore.h>
..
phoneTextField.layer.borderWidth = 1.0f;
phoneTextField.layer.borderColor = [[UIColor blueColor] CGColor];
phoneTextField.borderStyle = UITextBorderStyleNone;
Dans Swift 3, vous pouvez utiliser les deux lignes suivantes:
myText.layer.borderColor = UIColor.lightGray.cgColor
myText.layer.borderWidth = 1.0
J'ai résolu ce problème dans le storyboard en mettant un complètement désactivé UIButton
derrière le UITextView
et en faisant la couleur d'arrière-plan de UITextView
clearColor. Cela fonctionne sans nécessiter de code ou de packages supplémentaires.