2009-12-07 21 views
112

Tengo un gran deseo de establecer mi propio color en el borde de UITextField. Pero hasta ahora pude descubrir cómo cambiar el estilo de línea de borde solamente.UITextField color de borde

He usado la propiedad de fondo para establecer el color de fondo de tal manera:

self.textField.backgroundColor = textFieldColor; 

pero tengo que cambiar el color del borde UITextField también. Y mi pregunta fue sobre cómo cambiar el color del borde.

Respuesta

19

Prueba esto:

UITextField *theTextFiels=[[UITextField alloc]initWithFrame:CGRectMake(40, 40, 150, 30)]; 
    theTextFiels.borderStyle=UITextBorderStyleNone; 
    theTextFiels.layer.cornerRadius=8.0f; 
    theTextFiels.layer.masksToBounds=YES; 
     theTextFiels.backgroundColor=[UIColor redColor]; 
    theTextFiels.layer.borderColor=[[UIColor blackColor]CGColor]; 
    theTextFiels.layer.borderWidth= 1.0f; 

    [self.view addSubview:theTextFiels]; 
    [theTextFiels release]; 

y QuartzCore importación:

#import <QuartzCore/QuartzCore.h> 
254

importación QuartzCore marco en el que la clase:

#import <QuartzCore/QuartzCore.h> 

y para cambiar el color del borde, utilice el siguiente fragmento de código (Lo estoy configurando para redColor),

textField.layer.cornerRadius=8.0f; 
    textField.layer.masksToBounds=YES; 
    textField.layer.borderColor=[[UIColor redColor]CGColor]; 
    textField.layer.borderWidth= 1.0f; 

Para volver de nuevo a la disposición original acaba de establecer color de borde para borrar el color,

serverField.layer.borderColor=[[UIColor clearColor]CGColor]; 

en código SWIFT

textField.layer.borderWidth = 1 
    textField.layer.borderColor = UIColor.whiteColor().CGColor 
+3

Es import en lugar de QuartCore (se olvidó de la z) – cldrr

+49

En iOS 7 debe establecer un ancho de borde o el color no surte efecto. – Micah

+1

Como principiante, esto no tiene sentido para mí. Si comienzo una aplicación vacía en blanco, vaya al guión gráfico y agregue un campo TextView. ¿Dónde importo el quartzcore? ¿Dónde agrego la información de borderwidth arriba? ¿Qué es "textField" y cómo sabe de qué campo de texto estoy hablando? –

16

Importe la clase siguiente:

#import <QuartzCore/QuartzCore.h> 

// Código para configurar el color gris para el borde del campo de texto

[[textField layer] setBorderColor:[[UIColor colorWithRed:171.0/255.0 
                green:171.0/255.0 
                blue:171.0/255.0 
                alpha:1.0] CGColor]]; 

Reemplace 171.0 con el número de color correspondiente según se requiera.

+5

- esto no funciona en iOS7. –

+0

No funciona en IOS 9 también. –

10

Para simplificar esta acciones de respuesta aceptada, también puede crear Categoría para UIView (ya que esto funciona para todas las subclases de UIView, no sólo para los campos de texto:

UIView + Additions.h:

#import <Foundation/Foundation.h> 

@interface UIView (Additions) 
- (void)setBorderForColor:(UIColor *)color 
        width:(float)width 
        radius:(float)radius; 
@end 

UIView + Additions.m:

#import "UIView+Additions.h" 

@implementation UIView (Additions) 

- (void)setBorderForColor:(UIColor *)color 
        width:(float)width 
        radius:(float)radius 
{ 
    self.layer.cornerRadius = radius; 
    self.layer.masksToBounds = YES; 
    self.layer.borderColor = [color CGColor]; 
    self.layer.borderWidth = width; 
} 

@end 

Uso:

#import "UIView+Additions.h" 
//... 
[textField setBorderForColor:[UIColor redColor] 
         width:1.0f 
         radius:8.0f]; 
11

esta pregunta se presenta bastante alto en una búsqueda en Google y trabajó en su mayor parte! Encontré que la respuesta de Salman Zaidi era parcialmente correcta para iOS 7.

Necesita hacer una modificación al código de "revertir".He encontrado que la siguiente para revertir funcionó a la perfección:

textField.layer.cornerRadius = 0.0f; 
textField.layer.masksToBounds = YES; 
textField.layer.borderColor = [[UIColor blackColor] CGColor]; 
textField.layer.borderWidth = 0.0f; 

entiendo que esto es más probable debido a los cambios en iOS 7.

4

borderColor en cualquier caso (o subclase UIView) también podría configurarse usando el guión gráfico con un poco de codificación y este enfoque podría ser muy útil si está configurando el color del borde en múltiples objetos de la interfaz de usuario.

A continuación se presentan los pasos cómo lograrlo,

  1. crear una categoría de clase CALayer. Declare una propiedad del tipo UIColor con un nombre adecuado, lo llamaré borderUIColor.
  2. Escriba el colocador y el captador para esta propiedad.
  3. En el método 'Setter', simplemente establezca la propiedad "borderColor" de la capa en el nuevo valor CGColor de colores.
  4. En el método 'Getter', devuelva UIColor con borderColor de la capa.

P.S: Recuerde, las categorías no pueden tener propiedades almacenadas. 'borderUIColor' se usa como una propiedad calculada, solo como una referencia para lograr aquello en lo que nos estamos enfocando.

Por favor, eche un vistazo al siguiente ejemplo de código;

C Objetivo:

archivo de interfaz:

#import <QuartzCore/QuartzCore.h> 
#import <UIKit/UIKit.h> 

@interface CALayer (BorderProperties) 

// This assigns a CGColor to borderColor. 
@property (nonatomic, assign) UIColor* borderUIColor; 

@end 

Implementación del archivo:

#import "CALayer+BorderProperties.h" 

@implementation CALayer (BorderProperties) 

- (void)setBorderUIColor:(UIColor *)color { 
    self.borderColor = color.CGColor; 
} 

- (UIColor *)borderUIColor { 
    return [UIColor colorWithCGColor:self.borderColor]; 
} 

@end 

Swift 2.0:

extension CALayer { 
var borderUIColor: UIColor { 
    set { 
     self.borderColor = newValue.CGColor 
    } 

    get { 
     return UIColor(CGColor: self.borderColor!) 
    } 
} 
} 

Y, finalmente, vaya a su guión gráfico/XIB, siga los pasos restantes;

  1. Haga clic en el objeto Ver para el que desea establecer el color del borde.
  2. Haga clic en "Inspector de identidad" (3. ° desde la izquierda) en el panel "Utilidad" (lado derecho de la pantalla).
  3. En "Atributos de tiempo de ejecución definidos por el usuario", haga clic en el botón "+" para agregar una ruta clave.
  4. Establezca el tipo de la ruta de la clave en "Color".
  5. Ingrese el valor de la ruta de la clave como "layer.borderUIColor". [Recuerde que este debe ser el nombre de variable que declaró en la categoría, no borderColor aquí es borderUIColor].
  6. Finalmente, elija el color que desee.

Tienes que establecer layer.borderWidth valor de la propiedad de al menos 1 para ver el color del borde.

Compilar y ejecutar. Happy Coding. :)

+0

No publique respuestas idénticas a preguntas múltiples. Publique una buena respuesta, luego vote/marque para cerrar las otras preguntas como duplicados. Si la pregunta no es un duplicado, _aloja tus respuestas a la pregunta_. – josliber

1

Si se utiliza un campo de texto con esquinas redondeadas utilizar este código:

self.TextField.layer.cornerRadius=8.0f; 
    self.TextField.layer.masksToBounds=YES; 
    self.TextField.layer.borderColor=[[UIColor redColor]CGColor]; 
    self.TextField.layer.borderWidth= 1.0f; 

Para quitar la frontera:

self.TextField.layer.masksToBounds=NO; 
self.TextField.layer.borderColor=[[UIColor clearColor]CGColor]; 
Cuestiones relacionadas