Pregunta
Quiero tener un borde gris delgada alrededor de un UITextView
. He ido a través de la documentación de Apple, pero no pude encontrar ninguna propiedad allí. Por favor, ayuda.
Solución
#import <QuartzCore/QuartzCore.h>
....
// typically inside of the -(void) viewDidLoad method
self.yourUITextView.layer.borderWidth = 5.0f;
self.yourUITextView.layer.borderColor = [[UIColor grayColor] CGColor];
Otros consejos
Añadir el siguiente para las esquinas redondeadas:
self.yourUITextview.layer.cornerRadius = 8;
Este es el código que usé, añadir un borde alrededor de mi control TextView
llamado "tbComments":
self.tbComments.layer.borderColor = [[UIColor grayColor] CGColor];
self.tbComments.layer.borderWidth = 1.0;
self.tbComments.layer.cornerRadius = 8;
Y esto es lo que parece:
Peasy fácil.
añadir UIImageView
como una vista secundaria de la UITextView
. Esto coincide con la frontera nativo en un UITextField
, incluyendo 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:
funciona muy bien, pero el color debe ser un CGColor
, no UIColor
:
view.layer.borderWidth = 5.0f;
view.layer.borderColor = [[UIColor grayColor] CGColor];
Programación de Swift, utilice este
tv_comment.layer.borderWidth = 2
tv_comment.layer.borderColor = UIColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1).CGColor
Esto es lo más cerca que pude de un UITextField originales
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
}
Creo que las respuestas anteriores son para las versiones anteriores de Swift. Busqué en Google un poco y los siguientes código de obras para Swift 4. Sólo compartiendo por el que se puede beneficiar.
self.textViewName.layer.borderColor = UIColor.lightGray.cgColor
self.textViewName.layer.borderWidth = 1.0;
self.textViewName.layer.cornerRadius = 8;
Codificación feliz!
A partir de iOS 8 y 6 Xcode, ahora encontrar la mejor solución es una subclase UITextView y marcar la subclase como un IB_DESIGNABLE, lo que permitirá ver en la frontera del guión gráfico.
encabezado:
#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
A continuación, sólo tienes que arrastrar tu UITextView en storyboard y establece su clase con el BorderTextView
Lo que hizo que funcione (además de seguir las respuestas aquí) está añadiendo el atributo borderStyle
:
#import <QuartzCore/QuartzCore.h>
..
phoneTextField.layer.borderWidth = 1.0f;
phoneTextField.layer.borderColor = [[UIColor blueColor] CGColor];
phoneTextField.borderStyle = UITextBorderStyleNone;
Sólo una pequeña adición. Si realiza la frontera un poco más amplio, que va a interferir con el lado izquierdo y derecho del texto. Para evitar que, añadí la línea siguiente:
self.someTextView.textContainerInset = UIEdgeInsetsMake(8.0, 8.0, 8.0, 8.0);
En Swift 3, es posible utilizar las dos líneas siguientes:
myText.layer.borderColor = UIColor.lightGray.cgColor
myText.layer.borderWidth = 1.0
Me resuelto este problema de guión gráfico poniendo un UIButton
totalmente desactivado detrás del UITextView
y hacer que el color de fondo de la clearColor UITextView
. Estos trabajos sin necesidad de código extra o paquetes.