2013-02-21 12 views
5

so di poter personalizzare il testo UIBarButtonItem viaPersonalizzazione colore tinta di UIBarButtonSystemItem con UIAppearance API

setTitleTextAttributes:forState: 

V'è anche un modo per personalizzare UITabBar icone tramite

setSelectedImageTintColor: 

Esiste un modo per personalizzare il colore della tinta di un UIBarButtonSystemItem, (ad esempio il colore dell'icona cestino), solo per avere un UX coerente? Non ho trovato nulla.

Se ciò non è possibile, come procederei? Devo salvare una versione modificata a colori dell'icona? Dove posso trovarlo? Quale sarebbe il modo più semplice per modificarlo?

EDIT

Per chiarire, non è il colore di sfondo del UIBarButtonItem mi chiedo, ma il colore del contorno dell'icona.

EDIT

Impostazione del colore tinta della UIBarButtonItem produce il colore del pulsante set sfondo.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    self.window.backgroundColor = [UIColor whiteColor]; 
    [self.window makeKeyAndVisible]; 


    [[UINavigationBar appearance] setTintColor:[UIColor greenColor]]; 

    UIBarButtonItem* trashButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemTrash target:nil action:nil]; 

    trashButton.tintColor = [UIColor blackColor]; 
    UIViewController* viewController = [[UIViewController alloc] init]; 
    UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:viewController]; 
    [viewController.navigationItem setRightBarButtonItem:trashButton]; 

    self.window.rootViewController = navController; 
    return YES; 
} 

rese this.

EDIT 2

Risulta che il colore contorno delle icone di sistema infatti può essere impostato tramite tintColor proprietà di UIBarButtonItem, ma solo se la sua proprietà style ha il valore UIBarButtonItemStylePlain. (Anche in questo caso, alcuni colori sono speciali e lasciano il contorno bianco. Uno di questi colori è [UIColor blackColor]) Tuttavia, utilizzando UIBarButtonItem in un UINavigationBar il style è obbligato a essere UIBarButtonItemStyleBordered. In questo caso, tintColor imposta il colore di sfondo del pulsante e lascia il contorno bianco.

Come sto usando il UIBarButtonItem s in una barra di spostamento, il mio problema rimane ancora irrisolto.

risposta

5

Ho risolto il mio problema cambiando il colore della voce di sistema di pulsante della barra file PNG in un editor esterno, tra cui quella immagine al progetto e caricarla tramite

[[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"UIButtonBarTrashBlack"] style:UIBarButtonItemStyleBordered target:self action:@selector(myAction)]; 

ho trovato l'immagine del sistema interno utilizzando l'utile UIKit-Artwork-Extractor.

Ho modificato il colore del disegno utilizzando il software gratuito GIMP.

+0

Grazie mille per questa risposta utile! Questo sembra davvero il modo più semplice per farlo. – Thermometer

+0

Peccato che non sia possibile impostare la larghezza di UIBarButtonItem in una UINavigationBar :(Ora il pulsante non assomiglia all'elemento System. – Thermometer

7

Nota: Quanto segue funziona solo per i pulsanti aggiunti a una barra degli strumenti, non a una barra di navigazione.

Utilizzare la proprietà tintColor di UIBarButtonItem. Chiamalo su un'istanza specifica o chiamalo su appearance per tutti gli elementi del pulsante.

Fare attenzione a impostare la tinta per tutti i pulsanti tramite appearance. Non tutti gli elementi dei pulsanti sembrano giusti quando si imposta la tinta.

Aggiornamento:

UIBarButtonItem *btnAdd = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addAction)]; 
btnAdd.tintColor = [UIColor blackColor]; 

Questo renderà del pulsante icona nera (lo sfondo sarà qualunque sia la tinta della barra degli strumenti è).

+0

Grazie per la pronta risposta. Come sospettavo, questo cambia il colore di sfondo del barButton. Per esempio, la mia barra di navigazione è verde e anche gli sfondi dei pulsanti sono verdi, e voglio visualizzare il testo nero e anche 'UIBarButtonSystemItem's è nero su uno sfondo verde, come potrei ottenerlo? Il mio unico problema è il colore nero di 'UIBarButtonSystemItem', che di default è bianco e non posso modificarlo. – ilmiacs

+0

Lo faccio nella mia app. Per uno degli elementi del pulsante della barra dei tipi di sistema, imposto il colore del pulsante tinta colore. Questo cambia solo il colore dell'icona. Lo faccio per gli elementi dei pulsanti della barra che aggiungo a una barra degli strumenti. – rmaddy

+0

@ilmiacs Vedere la mia risposta aggiornata. – rmaddy

-1

Invece di usare il colore nero, utilizzare questo:

[UIColor colorWithRed: 0 verde: 0 azzurro: 0 alpha: 1]; // [UIColor blackColor] lo rende bianco

+0

Hai un down senza commenti? Molto utile – Yariv

Problemi correlati