Me gustaría saber cómo debo cambiar un UISearchBar de la curva por defecto a un rectángulo.cómo cambiar UISearchBar de ronda a rectángulo?
Respuesta
for (UIView *searchBarSubview in [mySearchBar subviews]) {
if ([searchBarSubview conformsToProtocol:@protocol(UITextInputTraits)]) {
@try {
[(UITextField *)searchBarSubview setBorderStyle:UITextBorderStyleRoundedRect];
}
@catch (NSException * e) {
// ignore exception
}
}
}
Swift 4:
mySearchBar.subviews().forEach { searchBarSubview in
if searchBarSubview is UITextInputTraits {
do {
(searchBarSubview as? UITextField)?.borderStyle = .roundedRect
} catch {
// ignore exception
}
}
}
imagen adicional, un fondo simple vista y la visión correcta para su campo de texto a la izquierda.
Ejemplo a continuación
UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 10., nameField.bounds.size.height)];
nameField.leftView = leftView;
nameField.leftViewMode = UITextFieldViewModeAlways;
leftView release];
campo de texto de dónde? – Desmond
En nuestro proyecto anterior que también trató de poner en práctica en la forma, pero la personalización no es posible.
no hay manera de hacerlo? – Desmond
UISearchBar tiene la curva redonda, y se fijan si te gusta para que sea rectángulo que tiene que utilizar la barra de búsqueda personalizada imagen rectangular con tan como de la barra de búsqueda y 1 UIButton y UITextField, y su propia lógica de búsqueda
Yo usaría un UIView
, con estas características:
- configure su marco.
- CoreGraphics de importación en su clase
- establecer un fondo blanco de la vista
- establecen view.layer.cornerRadius=10;
- establecen view.layer.borderWidth=8;
- establecen view.layer.borderColor=[UIColor blackColor].CGColor;
- insertar una etiqueta (con un fondo claro) dentro de la vista creada
Para el botón de la izquierda usaría una uiimage, para el botón derecho configurado textField.clearButtonMode= UITextFieldViewModeAlways;
Espero que esto ayude.
Parece que es difícil, creo que lo dejaré como está. si funciona para usted, hágamelo saber. gracias :) – Desmond
En la imagen de destino no veo la sombra por defecto, por lo que voy a mencionar que el establecimiento de la propiedadfondo a cero se eliminará. Necesitaba hacer esto en mi proyecto y eliminar la imagen y manipular el borde funciona bien. Tuve que lanzar el control para llegar a la propiedad de fondo.
UITextField * x = (UITextField*)searchBarSubview;
x.background = nil;
@Keller gracias por la sugerencia para encontrar el control.
Podría intentar esto.
for (UIView *searchBarSubview in [search_bar subviews]) {
if ([searchBarSubview conformsToProtocol:@protocol(UITextInputTraits)]) {
if([searchBarSubview isKindOfClass:[UITextField class]])
{
[(UITextField *)searchBarSubview setBorderStyle:UITextBorderStyleRoundedRect];
}
}
}
mucho mejor en mi opinión:
UITextField *txfSearchField = [_searchBar valueForKey:@"_searchField"];
txfSearchField.borderStyle = UITextBorderStyleNone;
También logrado recientemente esto en un proyecto por la que atraviesa los subvistas del objeto UISearchBar. Sin embargo, el campo de texto no era un elemento secundario como se sugirió la respuesta aceptada, sino una subvista de otra subvista. La jerarquía de visión interna probablemente se modificó en algún momento. (SDK 8.4)
+ (void)setSearchBar:(UISearchBar *)searchBar cornerRadius:(CGFloat)radius {
//set searchbar corner radius
for(UIView *possibleSearchBarTextFieldSuperview in [searchBar subviews]) {
if([[possibleSearchBarTextFieldSuperview subviews] count] > 0) {
for(UIView *possibleInnerSearchBarTextField in [possibleSearchBarTextFieldSuperview subviews]) {
if([possibleInnerSearchBarTextField conformsToProtocol:@protocol(UITextInputTraits)]) {
possibleInnerSearchBarTextField.layer.cornerRadius = radius;
possibleInnerSearchBarTextField.layer.masksToBounds = YES;
return;
}
}
}
}
}
Este método no utiliza ningún método de indocumentados por lo que es probable que tienda de aplicaciones de seguridad, aunque es susceptible a dejar de trabajar con los futuros cambios en el SDK.
¿Por qué no utilizar el protocolo UIAppearance
?
[[UITextField appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setBorderStyle:UITextBorderStyleRoundedRect];
Swift 3
let textFieldInsideUISearchBar = searchBar.value(forKey: "searchField") as? UITextField
textFieldInsideUISearchBar?.borderStyle = .none
textFieldInsideUISearchBar?.backgroundColor = UIColor.white
@ Pierre.Vriens ¿en qué línea? –
Todos ellos. En otras palabras: simplemente publicando "algún código" sin explicación en absoluto, comúnmente se percibe como una respuesta de alta calidad. Así que tal vez quieras explicar brevemente cómo el código que publicaste ayuda a responder la pregunta. ¡Buena suerte! –
@ Pierre.Vriens mira el comentario aceptado, no es necesario explicarlo. simplemente copie y pegue en su UIViewController. –
- 1. UISearchBar Sin cambiar
- 2. Ronda a 2 cifras decimales
- 3. emacs: Cambiar la caja de un rectángulo
- 4. Android - Ronda a 2 cifras decimales
- 5. Javascript ronda siempre a un número superior
- 6. Ronda a 0.5 o 1.0 en SQL
- 7. anulable Ronda decimal a 5 decimales
- 8. número ios ronda a int o 0,5
- 9. UISearchBar: cambiar el color de fondo del campo de entrada
- 10. Ronda a la 500 más cercano, Python
- 11. ¿Por qué TimeSpan.FromSeconds (doble) ronda a milisegundos?
- 12. Python - Ronda a 05 más cercana
- 13. Cambiar el botón de búsqueda UISearchBar/teclado Título
- 14. UISearchBar texto color
- 15. UISearchBar imagen clara fondo
- 16. UISearchBar Animation
- 17. Agregar botón a la izquierda de UISearchBar
- 18. HTML5 - Cambiar la opacidad de un sorteo rectángulo
- 19. Deshabilitar UISearchBar
- 20. BigDecimal setScale y ronda
- 21. ¿Cómo buscar MKMapView con UISearchBar?
- 22. deslizamiento UISearchBar
- 23. iPhone UISearchBar y keyboardAppearance
- 24. iPhone: UISearchBar cómo buscar "" Cadena?
- 25. Cómo implementar UISearchBar en MonoTouch
- 26. Fecha de la ronda a intervalo de 10 minutos
- 27. ronda hacia cero en java
- 28. Cómo personalizar la apariencia de UISearchBar
- 29. Convirtiendo xts a ts: Error en Ronda (frecuencia)
- 30. Cómo dibujar un rectángulo?
sí esto funciona !!!!! gracias @keller – Desmond
Luego puedes controlar el radio de la esquina con searchBarTextField.layer.cornerRadius = 5.0; – esbenr
si ([searchBarSubview respondsToSelector: @sel (setBorderStyle)]) ' [(UITextField *) searchBarSubview setBorderStyle: UITextBorderStyleRoundedRect];' –