2010-06-30 10 views
13

appena passato a iOS 4 sul mio iPhone 3GS e alcune delle mie app si sono rotte.UIToolbar tint su iOS 4

Un problema che ho avuto è che ho avuto un UIToolbar con alcuni pulsanti, colorato in rosa, che ha funzionato bene sul sistema operativo 3.1.3. Dopo l'aggiornamento a iOS 4, la barra degli strumenti era ancora colorata, ma i pulsanti contenuti non erano più interessati dalla tinta. La barra degli strumenti era rosa mentre i pulsanti erano regolari-blu.

Si guardò intorno in rete, ma non trovò alcun riferimento a una cosa del genere.

Qualcuno sa cosa si è rotto nel processo?

risposta

23

(deve essere sincero qui - ho saputo la risposta prima di postare, solo non sapevo come caricare questi dati su StackOverflow. Ho pensato che la soluzione che ho trovato fosse preziosa per gli altri, quindi volevo postarla qui. nuovo qui, quindi per favore non critiche aspre :))

Quindi alla fine il problema è risultato, AFAICT, un cambiamento nel comportamento nel sistema operativo.

Come ha dichiarato il codice tinta lavorato prima dell'aggiornamento ed è stato scritto in questo modo:

// Toolbar content    
NSArray *items=[NSArray arrayWithObjects: ... ]; // PSEUDO CODE HERE 
[toolbar setItems:items]; 

// Add tint 
toolbar.tintColor = [UIColor colorWithRed:0.83 green:0.43 blue:0.57 alpha:0.5]; 

Quello che dovevo fare, era solo invertire l'ordine delle cose:

// Add tint 
toolbar.tintColor = [UIColor colorWithRed:0.83 green:0.43 blue:0.57 alpha:0.5]; 

// Toolbar content    
NSArray *items=[NSArray arrayWithObjects: ... ]; // PSEUDO CODE HERE 
[toolbar setItems:items]; 

(Se creato UIToolbar in Interface Builder, puoi cambiarne la tinta e ciò vale anche per i pulsanti).

Immagino che la tinta abbia aggiornato tutti i pulsanti prima di iOS 4, mentre in iOS 4 non lo fa e quando si aggiungono i pulsanti, controllano la tinta esistente. Ma questa è solo una supposizione. La soluzione funziona in ogni caso ..

Spero che questo aiuti qualcuno, e che io non violare alcun SO sacre regole ...

Cheers!

10

Bene, sembra più un errore del sistema operativo che una funzionalità, poiché le barre di navigazione cambiano il colore del loro oggetto quando si imposta la tinta colore.

Abbiamo notato che se si modifica lo stile dell'articolo, il colore viene aggiornato come effetto collaterale. Fare ciò che segue ha funzionato nel nostro caso. I pulsanti originali sono bordati, quindi li cambiamo in chiaro e li rimandiamo ai bordi. Puoi fare un codice più complicato e generico che salva lo stile corrente, ne imposta un altro e quindi torna indietro. Sono solo pigro per farlo. : D Comunque, hai capito l'idea.

toolbar.tintColor = //<some dynamically obtained UIColor> 

// Workaround to properly set the UIBarButtonItem's tint color in iOS 4 
for (UIBarButtonItem * item in toolbar.items) 
{ 
    item.style = UIBarButtonItemStylePlain; 
    item.style = UIBarButtonItemStyleBordered; 
} 

Cordiali saluti, Rula.

+0

Mi dispiace, non ha funzionato per me –