Respuestas:
#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 ...
, pero como dije, la capa es de solo lectura, por lo que la capa no tiene ningún método o variable para establecer
Agregue lo siguiente para las esquinas redondeadas:
self.yourUITextview.layer.cornerRadius = 8;
Aquí está el código que usé para agregar un borde alrededor de mi TextView
control llamado "tbComments":
self.tbComments.layer.borderColor = [[UIColor grayColor] CGColor];
self.tbComments.layer.borderWidth = 1.0;
self.tbComments.layer.cornerRadius = 8;
Y así es como se ve:
Pan comido.
Añado UIImageView
como una subvista de la UITextView
. Esto coincide con el borde nativo en un UITextField
, incluido el gradiente de arriba a abajo:
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];
Estas son las imágenes png que uso y una representación jpg:
code
resizableImageWithCapInsets: UIEdgeInsetsMake (28, 14, 28, 14)
Funciona muy bien, pero el color debe ser un CGColor
, no UIColor
:
view.layer.borderWidth = 5.0f;
view.layer.borderColor = [[UIColor grayColor] CGColor];
Creo que las respuestas anteriores son para las versiones anteriores de Swift. Busqué en Google un poco y el código a continuación funciona para Swift 4. Simplemente lo comparto para quien se beneficie.
self.textViewName.layer.borderColor = UIColor.lightGray.cgColor
self.textViewName.layer.borderWidth = 1.0
self.textViewName.layer.cornerRadius = 8
¡Feliz codificación!
self.textViewName.layer.borderColor = UIColor.systemGray4.cgColor
para programación rápida, use esto
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
esto es lo más cerca que pude de 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
}
puede agregar borde a UITextView desde el Guión gráfico - Inspector de identidad - Atributo de tiempo de ejecución definido por el usuario
A partir de iOS 8 y Xcode 6, ahora encuentro que la mejor solución es subclasificar UITextView y marcar la subclase como IB_DESIGNABLE, lo que le permitirá ver el borde en el guión gráfico.
Encabezamiento:
#import <UIKit/UIKit.h>
IB_DESIGNABLE
@interface BorderTextView : UITextView
@end
Implementación:
#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
Luego, simplemente arrastre su UITextView en el guión gráfico y establezca su clase en BorderTextView
Lo que lo hizo funcionar (además de seguir las respuestas aquí) es agregar el borderStyle
atributo:
#import <QuartzCore/QuartzCore.h>
..
phoneTextField.layer.borderWidth = 1.0f;
phoneTextField.layer.borderColor = [[UIColor blueColor] CGColor];
phoneTextField.borderStyle = UITextBorderStyleNone;
En Swift 3, puede usar las siguientes dos líneas:
myText.layer.borderColor = UIColor.lightGray.cgColor
myText.layer.borderWidth = 1.0
Resolví este problema en el guión gráfico poniendo un deshabilitado completamente UIButton
detrás UITextView
y haciendo el color de fondo de UITextView
clearColor. Esto funciona sin requerir código o paquetes adicionales.