No se puede establecer la propiedad translúcida de UISearchBar en NO

Estoy intentando configurar barTintColor de un UISearchBar sin translucidez. Sin embargo, establecer la propiedad translucent no parece hacer nada. Reproduzco el problema en un proyecto Xcode insípido aquí .

 self.searchDisplayController.searchBar.translucent = NO; self.searchDisplayController.searchBar.barTintColor = [UIColor networkingColor]; 

El color rojo de arriba no es el mismo que [UIColor networkingColor] en UIViews que no son traslúcidas. Sé acerca de la solución que implica establecer una image de background en la barra de búsqueda, pero el código anterior debería funcionar también.

Descargué su código y encontré una solución para, agregar un nombre de método es removeUISearchBarBackgroundInViewHierarchy y establecer searchBar.backgroundColor como networkingColor.

 - (void)viewDidLoad { [super viewDidLoad]; self.searchDisplayController.searchBar.translucent = NO; [self removeUISearchBarBackgroundInViewHierarchy:self.searchDisplayController.searchBar]; self.searchDisplayController.searchBar.backgroundColor = [UIColor networkingColor]; } - (void) removeUISearchBarBackgroundInViewHierarchy:(UIView *)view { for (UIView *subview in [view subviews]) { if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) { [subview removeFromSuperview]; break; //To avoid an extra loop as there is only one UISearchBarBackground } else { [self removeUISearchBarBackgroundInViewHierarchy:subview]; } } } 

Configura la image en la barra de búsqueda de este modo, resolverá tu problema.

 [[UISearchBar appearance] setBackgroundImage:[UIImage imageNamed:@"networking"]]; 

Gracias.

Tal vez es demasiado tarde para la fiesta,

Sin embargo, he hecho una extensión muy simple e ingeniosa para Swift 3 que te permite usar la propiedad translúcida sin ningún problema.

No implica el uso de API privadas ni pasos peligrosos dentro del object.

Puede downloadlo desde este repository de Github .