2012-07-09 16 views
5

Voy a necesitar mostrar el UISearchBar en diferentes alineamientos debido a los diferentes idiomas de entrada.
Vi this answer, pero no puedo encontrar dónde se alinea realmente el texto a la derecha en un UISearchBar.¿Es posible cambiar la alineación de un marcador de posición de UISearchBar?

¿Alguna idea?
Gracias!

+0

para SWIFT 3. he encontrado una solución aquí: [* * Personalizar el campo de texto fácilmente **] (http://stackoverflow.com/a/40105165/4593553) – Jerome

Respuesta

6

Esto es lo que he hecho:

for (UIView *subView in self.subviews){ 
     if ([subView isKindOfClass:[UITextField class]]) { 
      UITextField *text = (UITextField*)subView; 
      text.textAlignment = UITextAlignmentRight; 
      text.rightViewMode = UITextFieldViewModeAlways; 
     } 
    } 

Si también desea mover el icono de la lupa, se puede hacer esto:

text.leftView = nil; 
text.rightView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"search_icon.png"]]; 

Pero usted tendrá que proporcionar la search_icon imagen .png

+0

Por cierto, para que esto funcione con iOS 7 necesitas: [[self.subviews objectAtIndex: 0] subviews] en el para el bucle en lugar de solo self.subviews –

3

Aquí está la solución

UITextField *searchTextField = [searchBar valueForKey:@"_searchField"]; 
UILabel *placeholderLabel = [searchTextField valueForKey:@"_placeholderLabel"]; 
[placeholderLabel setTextAlignment:NSTextAlignmentLeft]; 
+0

me sale un error "esperado" en la segunda línea – SleepsOnNewspapers

+1

Hay dos puntos faltantes, amablemente póngalo. –

+1

¡Ha actualizado la respuesta! –

0

Conjunto atribuido texto marcador de posición para conseguir alineado a la izquierda del marcador de posición, prueba este código ...

//Step1 : Make blank attributed string 
    NSMutableAttributedString * attributedString = [[NSMutableAttributedString alloc] initWithString:@""]; 

    //Step2 : Append placeholder to blank attributed string 
    NSString *strSearchHere = @"Search here..."; 
    NSDictionary * attributes = [NSDictionary dictionaryWithObject:[UIColor blackColor] forKey:NSForegroundColorAttributeName]; 
    NSAttributedString * subString = [[NSAttributedString alloc] initWithString:strSearchHere attributes:attributes]; 
    [attributedString appendAttributedString:subString]; 

    //Step3 : Append dummy text to blank attributed string 
    NSString *strLongText = @"LongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongTextLongText"; 
    NSDictionary * attributesLong = [NSDictionary dictionaryWithObject:[UIColor clearColor] forKey:NSForegroundColorAttributeName]; 
    NSAttributedString * subStringLong = [[NSAttributedString alloc] initWithString:strLongText attributes:attributesLong]; 
    [attributedString appendAttributedString:subStringLong]; 

    //Step4 : Set attributed placeholder string to searchBar textfield 
    UITextField *searchTextField = [searchBarr valueForKey:@"_searchField"]; 
    searchTextField.attributedPlaceholder = attributedString; 
    searchTextField.leftView = nil; //To Remove Search icon 
    searchTextField.textAlignment = NSTextAlignmentLeft; 
Cuestiones relacionadas