Necesito para cambiar el color del botón Cancelar texto de UISearchBar en iOS7.

Normalmente UISearchBar botón Cancelar textColor es azul y quiero cambiar textColor a redColor.

Cómo cambiar textColor de botón Cancelar de UISearchBar en iOS7?

¿Cómo puedo cambiarlo?

InformationsquelleAutor Fire Fist | 2013-10-06

17 Comentarios

  1. 55

    He encontrado respuestas a mis propias preguntas.

    Es aquí el código , añadir en AppDelegate si desea cambiar todos los botón cancelar.

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

    Swift:

    let attributes = [NSForegroundColorAttributeName : UIColor.red]
        UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(attributes, for: .normal)
    
    • UITextAttributeTextColor etc. están en desuso en iOS7. Uso NSForegroundColorAttributeName etc. en su lugar.
    • No sé si esto funcionaba antes, pero como de 7.0.3 NO funciona.
    • Véase mi respuesta a continuación para 7.0.3 y más..
    • [[UIBarButtonItem appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setTintColor:[UIColor blackColor]];
    • Usted puede simplemente cambiar el color del matiz!
    • UIBarButtonItem.apariencia(whenContainedInInstancesOf: [UISearchBar.auto]).setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.blanco], para: UIControlState.normal) Realmente útil respuesta…!!

  2. 16

    Si usted sólo desea establecer el color del texto del botón, usted sólo necesita una línea:

    [[UIBarButtonItem appearanceWhenContainedIn: [UISearchBar class], nil] setTintColor:[UIColor redColor]];
    
  3. 12

    Usted puede hacer esto de esta

    [yourSearchBarName setTintColor:[UIColor whateverColorYouWant]];
    
    • El problema con esto, es que también establece el cursor de color.
  4. 9

    Puede cambiar el subvistas de la UISearchBar como este en - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar

    UIView *view = [_searchBar.subviews objectAtIndex:0];
    for (UIView *subView in view.subviews) {
        if ([subView isKindOfClass:[UIButton class]]) {
            UIButton *cancelButton = (UIButton *)subView;
            [cancelButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
            [cancelButton setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];
        }
    }
    
    • no funciona en iOS 8 para mí..
    • Cavar a través de subvistas es frágil forma de hacerlo. El UIAppearance «cuando contenida en los» métodos.
  5. 7

    Actualizado para Swift 5:

    let searchBarCancelButtonForegroundColor = UIColor.red
    let attributes = [NSAttributedString.Key.foregroundColor: searchBarCancelButtonForegroundColor]
    
    //Regular mode
    UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(attributes, for: .normal)
    
    //After click
    UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).tintColor = searchBarCancelButtonForegroundColor
    

    Trabajado para SWIFT 4

    Utilizar el appearance función de UIAppearance módulo

    Método 1:- Mostrar botón cancelar en la carga con searchBar

    let attributes = [NSAttributedStringKey.foregroundColor : UIColor.red]
        UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(attributes, for: .normal)
    

    o –

    Método 2:
    Mostrar botón cancelar de color después de searchBar clic –

      UIBarButtonItem.appearance(whenContainedInInstancesOf:[UISearchBar.self]).tintColor = UIColor.red
    

    Cómo cambiar textColor de botón Cancelar de UISearchBar en iOS7?

    • este fue el único que me funciona, gracias
    • Me alegra poder ayudar 🙂
  6. 6

    Te puede dar formato a su barra de búsquedas botón cancelar de la siguiente manera

    [[UIBarButtonItem appearanceWhenContainedIn: [UISearchBar class], nil] setTintColor:[UIColor whiteColor]];
        [[UIBarButtonItem appearanceWhenContainedIn: [UISearchBar class], nil] setTitle:@"Your Text Here"];
    

    La esperanza de que funcione para usted.

    • Este es obsoleta en iOS 9. «Uso +appearanceWhenContainedInInstancesofclasses: en lugar» de marco.
  7. 3

    Swift 3:

    Utilizar este código para establecer el color Rojo (texto,
    corcel, botón)

    searchController.searchBar.tintColor = .red
    

    si quieres cambiar el botón cancelar de color a blanco, agregar este código también

    UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.white], for: .normal)
    
  8. 1

    Mi enfoque para establecer el cursor y el botón de color de forma independiente es este: yo coloque el cursor de color azul en la Aplicación Delegado (-aplicación:didFinishLaunchingWithOptions:):

    [[UITextField appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setTintColor:[UIColor blueColor]];
    

    Y, a continuación, utilizar la barra de búsqueda del matiz de color en cada controlador para configurar los botones de color. Puede ajustar el tono de color, incluso en el Guión gráfico.

  9. 1

    Probado en Swift 4

        let barButtonItem = UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self])
        barButtonItem.title = NSLocalizedString("Cancel", comment: "")
        barButtonItem.setTitleTextAttributes([.font            : UIFont.systemFont(ofSize: 15.0, weight: .medium),
                                              .foregroundColor : #colorLiteral(red: 0.1960784314, green: 0.1960784314, blue: 0.1960784314, alpha: 1)], for: .normal)
    
  10. 1

    Para swift 4.2

    let attributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
    UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(attributes, for: UIControl.State.normal)
    
  11. 0

    Para las personas que utilizan Swift, primero tuve que agregar
    Eddie K la extensión

    Entonces yo era capaz de llamar a él (básicamente lo que Sabo hizo en respuesta):

    UIBarButtonItem.appearanceWhenContainedWithin(UISearchBar.self).setTitleTextAttributes()
    
  12. 0

    UITextAttribute es depricated de IOS 7 a usar más adelante para IOS 7 o posterior

    [[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor], NSFontAttributeName : [UIFont fontWithName:@"Helvetica" size:17]} forState:UIControlStateNormal];
    
  13. 0

    Una alternativa a la UISearchBar sería el SHSearchBar. Esta swift marco es fácilmente personalizable sin piratería, de código abierto, tiene un montón de pruebas unitarias y está disponible a través de Cocoapods. Se necesita al menos iOS 8.

  14. 0

    Swift 4

    let uiButton = bar.value(forKey: "cancelButton") as? UIButton
    uiButton?.setTitle("Cancel", for: .normal)
    uiButton?.setTitleColor(UIColor.white,for: .normal)
    

Dejar respuesta

Please enter your comment!
Please enter your name here