tipos texto tamaño relieve letra fuente formato elegir cuadro concepto como color cambiar aparece ios uisearchbar

ios - texto - relieve en word 2013



Modificación del color y el estilo de la fuente del botón de cancelación de UISearchBar (11)

Swift 3

let attributes = [ NSForegroundColorAttributeName : UIColor.white, NSFontAttributeName : UIFont.systemFont(ofSize: 17) ] UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(attributes, for: .normal)

¿Hay alguna forma de cambiar la fuente del texto y el color del botón Cancelar de UISearchBar sin subclasificar la barra de búsqueda?


Basado en la respuesta de htinlinn, esto es lo que usé en mi método viewDidLoad del controlador de vista usando la barra de búsqueda en iOS 7:

[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], NSForegroundColorAttributeName, nil] forState:UIControlStateNormal];


La versión Swift simplificada de @htinlinn responde:

let attributes = [ NSForegroundColorAttributeName : UIColor.textBlueColor, NSFontAttributeName : UIFont.systemFontOfSize(13) ] UIBarButtonItem.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).setTitleTextAttributes(attributes, forState: .Normal)


Para modificar el botón de cancelación de la barra de búsqueda, tome el objeto Botón y cambie la referencia de ese botón a su botón personalizado.

UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(50,20,300,30)]; searchBar.delegate = self; searchBar.barStyle = UIBarStyleDefault; searchBar.showsCancelButton = YES; UIButton *cancelButton; for (id button in searchBar.subviews) { if ([button isKindOfClass:[UIButton class]]) { cancelButton=(UIButton*)button; break; } }


Prueba este:

[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitleTextAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"SourceSansPro-Regular" size:14]} forState:UIControlStateNormal];


Puede utilizar la propiedad tint de searchBar para cambiar el color de searchBar, el color del botón de cancelación se cambiará, pero de acuerdo con el color de UISearchBar. No puedo ser editado manualmente. Pero siempre puede poner una personalización sobre él en el generador de interfaces, que ocultará el botón de cancelación nativo. Y el usuario utilizará su botón personalizado como el botón de cancelación de la barra de búsqueda.


Si solo desea modificar el botón Cancelar , puede hacerlo mediante:

if let cancelButton = searchBar.valueForKey("cancelButton") as? UIButton { cancelButton.setTitle(<your_string>, forState: <UIControlState>) cancelButton.setTitleColor(<your_uicolor>, forState: <UIControlState>) cancelButton.setAttributedTitle(<your_nsattributedstring>, forState: <UIControlState>) }

donde searchBar es su objeto UISearchBar .


Solución rápida después de iOS 9.0 (modificando la respuesta de htinlinn):

if #available(iOS 9.0, *) { UIBarButtonItem.appearanceWhenContainedInInstancesOfClasses([UISearchBar.classForCoder()]) .setTitleTextAttributes([ NSFontAttributeName: UIFont.systemFontOfSize(12), NSForegroundColorAttributeName: UIColor.blueColor(), NSShadowAttributeName: NSShadow(color: UIColor.redColor(), offset: CGSizeMake(0, -1), blurRadius: 2) ], forState: UIControlState.Normal) } else { // Link to Objective-C Method }

Y el método actual de Objective-C ( UITextAttributeTextColor está en desuso desde iOS 7.0):

[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitleTextAttributes:@{ NSForegroundColorAttributeName: [UIColor blueColor], NSFontAttributeName: [UIFont systemFontOfSize:12]} forState:UIControlStateNormal];

Mi pequeña extensión de sombra utilizada en el código anterior:

extension NSShadow { convenience init(color: AnyObject!, offset: CGSize, blurRadius: CGFloat) { self.init() self.shadowColor = color self.shadowOffset = offset self.shadowBlurRadius = blurRadius } }


Una solución mucho mejor here

UIButton *cancelButton = [searchBar valueForKey:@"_cancelButton"]; [cancelButton setTitleColor:[UIColor yourColor] forState:UIControlStateNormal]; [cancelButton setTitle:@"Your Text" forState:UIControlStateNormal];

y de forma similar, puede cambiar otras propiedades de estilo y texto del botón.


Swift 4

let attributes:[NSAttributedStringKey:Any] = [ NSAttributedStringKey.foregroundColor : UIColor.black, NSAttributedStringKey.font : UIFont.systemFont(ofSize: 17) ] UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(attributes, for: .normal)


Puede cambiar el estilo del botón Cancelar cambiando la apariencia de UIBarButtonItem cuando se encuentra en UISearchBar .

Por ejemplo,

[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor blueColor], UITextAttributeTextColor, [UIColor darkGrayColor], UITextAttributeTextShadowColor, [NSValue valueWithUIOffset:UIOffsetMake(0, -1)], UITextAttributeTextShadowOffset, nil] forState:UIControlStateNormal];