ios - Cambia il carattere di un UIBarButtonItem




6 Answers

Poiché UIBarButtonItem eredita da UIBarItem, puoi provare

- (void)setTitleTextAttributes:(NSDictionary *)attributes
                  forState:(UIControlState)state

ma questo è solo per iOS5. Per iOS 3/4, dovrai utilizzare una visualizzazione personalizzata.

Ho un UIBarButtonItem nel mio UIToolbar intitolato Fatto . Ora voglio cambiare il carattere da predefinito a "Trebuchet MS" con Grassetto. Come lo posso fare?




Per coloro che sono interessati all'utilizzo di UIAppearance per lo stile dei caratteri di UIBarButtonItem tutta l'app, è possibile utilizzare questa riga di codice:

Obiettivo C:

NSDictionary *barButtonAppearanceDict = @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Light" size:12.0], NSForegroundColorAttributeName: [UIColor whiteColor]};
[[UIBarButtonItem appearance] setTitleTextAttributes:barButtonAppearanceDict forState:UIControlStateNormal];

Swift 2.3:

UIBarButtonItem.appearance().setTitleTextAttributes(
[
    NSFontAttributeName : UIFont(name: "HelveticaNeue-Light", size: 12)!,
    NSForegroundColorAttributeName : UIColor.white
],
for: .normal)

Swift 3.0 / 4

UIBarButtonItem.appearance().setTitleTextAttributes(
[
    NSFontAttributeName : UIFont(name: "HelveticaNeue-Light", size: 12)!,
    NSForegroundColorAttributeName : UIColor.white,
], for: .normal)

Oppure per un singolo UIBarButtonItem (non per tutte le app), se hai un carattere personalizzato per un pulsante in particolare:

let barButtonItem = UIBarButton()
barButtonItem.setTitleTextAttributes([
    NSFontAttributeName : UIFont(name: "FontAwesome", size: 26)!,
    NSForegroundColorAttributeName : UIColor.white,
], for: .normal)
barButtonItem.title = "\u{f02a}"

Certo, puoi cambiare il carattere e le dimensioni in qualsiasi modo desideri. Preferisco inserire questo codice nel file AppDelegate.m nella sezione didFinishLaunchingWithOptions .

Attributi disponibili (basta aggiungerli al NSDictionary ):

(Aggiornato per iOS7 +)




Queste sono ottime risposte sopra. Appena aggiornato per iOS7:

NSDictionary *barButtonAppearanceDict = @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Thin" size:18.0] , NSForegroundColorAttributeName: [UIColor whiteColor]};
    [[UIBarButtonItem appearance] setTitleTextAttributes:barButtonAppearanceDict forState:UIControlStateNormal];



Per fare questo per alcuni UIBarButtonItems ma non tutti consiglio il seguente approccio.

  1. Creare una sottoclasse UIBarButtonItem . Non aggiungere nulla ad esso - lo userai solo come una classe personalizzata nello storyboard e per il suo proxy di aspetto ...
  2. Nello storyboard, modifica la classe personalizzata per tutti gli UIBarButtonItems desiderati nella sottoclasse
  3. Nel tuo AppDelegate importa la sottoclasse UIBarButtonItem e aggiungi la seguente riga application:didFinishLaunchingWithOptions:

Nel mio caso ho UIBarButtonItem sottoclasse di UIBarButtonItem per il solo scopo di UIBarButtonItem in grassetto il testo:

[[BoldBarButtonItem appearance] setTitleTextAttributes:
  [NSDictionary dictionaryWithObjectsAndKeys: 
    [UIFont boldSystemFontOfSize:18.0], NSFontAttributeName,nil] 
                                              forState:UIControlStateNormal];



In tutta l'app:

if let font = UIFont(name: "AvenirNext-DemiBold", size: 15) {
        UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: font,NSForegroundColorAttributeName:TOOLBAR_TITLE_COLOR], forState: UIControlState.Normal)

    }



Supponendo che tu voglia supportare iOS4 e versioni precedenti, la cosa migliore da fare è creare un pulsante bar usando il metodo initWithCustomView: e fornire la tua vista che potrebbe essere qualcosa come un UIButton in cui puoi facilmente personalizzare il carattere.

Puoi anche trascinare un UIButton su una barra degli strumenti o una barra di navigazione in Interface Builder se vuoi creare il pulsante con il drag-and-drop anziché a livello di programmazione.

Sfortunatamente ciò significa creare da soli l'immagine di sfondo del pulsante. Non c'è modo di personalizzare il carattere di un UIBarButtonItem standard prima di iOS5.




Related

ios cocoa-touch uibarbuttonitem