2012-07-18 14 views
5

Primero, necesitaba establecer el color del texto del marcador de posición, por lo que subclasé el UITextfield como se muestra en varias publicaciones de desbordamiento de pila. Esto funciona bien Aquí hay una publicación de ejemplo de esto: How do I subclass UITextField and override drawPlaceholderInRect to change Placeholder color.Texto del marcador de posición de centrado en la subclase de UITextField

Pero, cuando intento usar searchNameField.textAlignment = UITextAlignmentCenter; Ya no está centrando el marcador de posición. El texto de entrada todavía está centrado bien.

Entonces, suponiendo que el centrado no funciona debido a la subclase, ¿qué debo agregar a mi subclase UITextField para que el texto del marcador de posición esté centrado?

Gracias

Editar

Aquí está el código que utiliza para resolver este problema. Esto se coloca dentro de mi subclase de UITextField.

- (CGRect)placeholderRectForBounds:(CGRect)bounds 
{ 
    CGSize size = [[self placeholder] sizeWithFont:[UIFont fontWithName:@"Arial" size:placeholdTextSize]]; 

    return CGRectMake((bounds.size.width - size.width)/2 , bounds.origin.y , bounds.size.width , bounds.size.height); 
} 

Tenga en cuenta que placeholdTextSize es una propiedad que establecí durante la inicialización.

Respuesta

5

Aquí tiene compinche

la subclasificación UITextField hará el trabajo:

// CustomTextField.h 
@interface CustomTextField : UITextField { 
} 
@end 

anulación de los métodos:

@implementation 
- (CGRect)placeholderRectForBounds:(CGRect)bounds { 
    return CGRectMake(x,y,width,height);//Return your desired x,y position and width,height 
} 

- (void)drawPlaceholderInRect:(CGRect)rect { 
    //draw place holder. 
[[self placeholder] drawInRect:rect withFont:[UIFont systemFontOfSize:12]]; 

} 
@end 
+1

Gracias. Para completar: para resolver este problema, utilicé el método 'placeholderRectForBounds'. Mi edición en la pregunta original muestra el código para cualquiera que esté interesado. – Jomnipotent17

2

Usted puede hacer esto en UITextField subclase

- (void)drawPlaceholderInRect:(CGRect)rect { 

[[UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.8] setFill]; 

[[self placeholder] drawInRect:rect withFont:[UIFont boldSystemFontOfSize:16.0] lineBreakMode:UILineBreakModeTailTruncation alignment:NSTextAlignmentCenter]; 

}

Cuestiones relacionadas