ios uitextfield background-color

ios - Color de fondo del iPhone



uitextfield background-color (7)

Esto es mucho más fácil de lo que todos pensamos.

Al configurar el color de fondo usando colorWithRed: green: blue :, los colores deben ser flotantes y deben ser una fracción de 1. Por ejemplo:

[myTextField setBackgroundColor:[UIColor colorWithRed:255.0f/255.0f green:110.0f/255.0f blue:110.0f/255.0f alpha:1];

Todos los estilos de TextField parecen funcionar cuando haces esto.

Ver también: el color de fondo no funciona como se esperaba

No puedo controlar el color de fondo de un UITextField con un borderStyle= UITextBorderStyleRoundedRect . Con este estilo de borde, la propiedad backgroundColor solo parece controlar una línea muy estrecha a lo largo del borde interior del rectángulo redondeado. El resto del campo permanece blanco.

Sin embargo, si borderStyle se establece en UIBorderStyle=UITextBorderStyleBezel entonces el fondo completo de UITextField está controlado por su propiedad backgroundColor .

¿Es esta una característica? ¿Hay alguna manera de controlar el UITextField de backgroundColor de un UITextField con un borderStyle=UITextBorderStyleRoundedRect ?


La respuesta de Jacob fue la mejor respuesta aquí, ya que te permite mantener las sombras debajo de los cuadros de texto de RoundedRect, ¡así que +1 para Jacob!

Para elaborar su solución, necesitas hacer esto:

UIView *textFieldShadeView=[[UIView alloc] init]; [textFieldShadeView setFrame:myTextFiled.frame]; textFieldShadeView.layer.cornerRadius=8.0f; textFieldShadeView.layer.masksToBounds=YES; textFieldShadeView.backgroundColor=[UIColor blueColor]; textFieldShadeView.alpha=0.3; textFieldShadeView.userInteractionEnabled=NO; [self.view addSubview:textFieldShadeView]; [textFieldShadeView release];

Donde myTextFiled es el campo de texto rect redondeado para el que está intentando cambiar el color de fondo. Haga lo anterior y obtendrá el campo de texto azulado de Jacob junto con las sombras correspondientes.


Para cambiar el color de fondo en un UITextField, primero debe usar un estilo de campo de texto diferente al estilo "redondeado" (como el estilo "sin bordes") en Interface Builder o mediante programación.

A continuación, puede cambiar fácilmente el color de fondo con

textField.backgroundColor = backgroundColor;

donde textField es su UITextField, y backgroundColor es un UIColor.

Como otra sugerencia, si desea restaurar la apariencia de las esquinas redondeadas, primero deberá

#import <QuartzCore/QuartzCore.h>

y luego establecer

textField.layer.cornerRadius=8.0f; textField.layer.masksToBounds=YES

para que esta característica funcione


Puedes hacerlo:

textField.backgroundColor = [UIColor whiteColor];

En este caso lo hago con color blanco, pero puedes hacerlo con otro color para uiColor .

Espera que ayude


Un volcado de la jerarquía de vistas revela que el UITextField tiene una subvista única de tipo UITextFieldRoundedRectBackgroundView , que a su vez tiene 12 UIImageView s.

Un artículo anterior de Erica Sadun muestra una UILabel adicional, que Apple aparentemente eliminó en versiones posteriores del SDK.

Jugar con UIImageView s no cambia mucho.

Entonces la respuesta es: probablemente no haya manera de cambiar el color de fondo.


Las otras respuestas no tienen las sombras presentes en un campo de UITextField con estilo de rectángulo redondeado. Después de probar muchas opciones, finalmente coloqué una vista en UIView sobre el UITextField, con un marco idéntico y una máscara de cambio de tamaño automático, configuré el alfa a 0,3 y configuré el fondo a un color azul. Luego usé el fragmento de la respuesta de Peter Johnson para recortar los bordes redondeados de la vista de superposición de colores. Además, desmarque la casilla de verificación ''Interacción del usuario habilitada'' en IB para permitir que los eventos táctiles caigan en cascada hacia abajo en el Campo de campo siguiente. Parece perfecto ahora.

Efecto secundario: su texto también será coloreado (no importa si es negro)

#import <QuartzCore/QuartzCore.h> colorizeOverlayView.layer.cornerRadius = 6.0f; colorizeOverlayView.layer.masksToBounds = YES;


... textField.opaque = YES; textField.backgroundColor=[UIColor blueColor]; textField.layer.cornerRadius=8.0f; textField.layer.masksToBounds=YES