2012-07-18 3 views
5

Quindi, per prima cosa, avevo bisogno di impostare il colore del testo segnaposto, quindi ho creato una sottoclasse di UITextfield come mostrato in diversi post di overflow dello stack. Funziona bene Ecco un esempio di questo post: How do I subclass UITextField and override drawPlaceholderInRect to change Placeholder color.Centra il testo segnaposto nella sottoclasse di UITextField

Ma, quando provo a utilizzare searchNameField.textAlignment = UITextAlignmentCenter; Non è più centrare il segnaposto. Il testo di input è ancora ben centrato.

Quindi, supponendo che il centraggio non funzioni a causa della sottoclasse, cosa devo aggiungere alla sottoclasse UITextField per avere il testo segnaposto centrato?

Grazie

Modifica

Ecco il codice che ho usato per risolvere questo problema. Questo è inserito nella mia sottoclasse di 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); 
} 

Si noti che placeholdTextSize è una proprietà che ho impostato durante l'inizializzazione.

risposta

5

Qui si va buddy

sottoclasse UITextField farà il lavoro:

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

sovrascrivere i metodi:

@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

Grazie. Per completezza: per risolvere questo problema, ho usato il metodo 'placeholderRectForBounds'. La mia modifica nella domanda originale mostra il codice per chiunque sia interessato. – Jomnipotent17

2

È possibile farlo in UITextField sottoclasse

- (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]; 

}