2011-07-29 10 views
38

UISearchBar 1px black borderQuitar el borde de 1 píxel bajo UISearchBar

estoy teniendo problemas para eliminar esa frontera 1px directamente bajo el punto de vista UISearchBar. Ahora no parece coincidir con mi vista de botón hecho. Lo he intentado:

searchBar.layer.borderWidth = 0; 
searchBar.layer.shadowOpacity = 0; 

Pero eso no parece funcionar. ¿Algunas ideas?

+0

Tal vez es parte del diseño? – apscience

Respuesta

88

No importa, que acabo de hacer:

searchBar.layer.borderWidth = 1; 
searchBar.layer.borderColor = [[UIColor whiteColor] CGColor]; 

y funciona!

+1

esto no funciona para mí. No tengo ninguna opción cuando intento autocompletar después de searchBar.layer. ¿Alguna idea de por qué? – budidino

+3

Bien, tuve que: # import budidino

+0

La única razón por la que funcionó es porque estableces el color del borde en el color de fondo de tu vista. Pero es la mejor solución que encontré hasta ahora. – testing

48
[searchBar setBackgroundImage:[UIImage new]]; 
+1

Creo que esta es una solución iOS 7+, que es lo que necesitaba. ¡Gracias! – rob5408

+0

Esta es la respuesta correcta – RPallas

+0

Esto depende del color de fondo que esté utilizando. – testing

3

Para superar esto en las formas Xamarin, que necesita para crear un CustomRenderer a la clase SearchBar. De esta manera:

using System; 
using Xamarin.Forms.Platform.iOS; 
using Xamarin.Forms; 
using MyProject.iOS; 

[assembly: ExportRenderer(typeof(SearchBar), typeof(CustomSearchBarRenderer))] 
namespace MyProject.iOS 
{ 
    public class CustomSearchBarRenderer:SearchBarRenderer 
    { 
     protected override void OnElementChanged (ElementChangedEventArgs<Xamarin.Forms.SearchBar> e) 
     { 
      base.OnElementChanged (e); 
      if (this.Control == null) return; 

      this.Control.BackgroundImage = new UIKit.UIImage(); 
     } 
    } 
} 
+1

¿Podría explicar cómo funciona esto y por qué las respuestas más simples no son lo suficientemente buenas? – meneldal

13

Para versión Swift, probado en iOS9:

searchBar.backgroundImage = UIImage() 

sería una muestra de la siguiente manera:

no-border-result

Cuestiones relacionadas