2010-06-30 6 views
13

gerade auf iOS 4 auf meinem iPhone 3GS und einige meiner Apps brach.UIToolbar Tönung auf iOS 4

Ein Problem, das ich hatte, war, dass ich eine UIToolbar mit einigen Tasten hatte, getönt zu pink, die gut auf dem 3.1.3 OS funktionierte. Nach dem Upgrade auf iOS 4 war die Symbolleiste immer noch getönt, aber die darin enthaltenen Schaltflächen waren vom Farbton nicht mehr betroffen. Die Symbolleiste war pink, während die Tasten regulär blau waren.

suchte danach im Internet, fand aber keine Hinweise auf so etwas.

Wer weiß, was in dem Prozess brach?

Antwort

23

(muss hier offen sein - ich wusste die Antwort vor dem Posten, wusste nur nicht, wie man diese Daten in StackOverflow lädt. Dachte die Lösung, die ich fand, war wertvoll für andere, also wollte es hier posten. Ich bin neu hier, also bitte keine harten Kritiker :))

So ergab sich schließlich das Problem, AFAICT, eine Änderung im Verhalten im Betriebssystem.

Wie bereits erwähnt die Tönung Code vor dem Upgrade gearbeitet und wurde wie folgt geschrieben:

// 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]; 

Was ich tun musste, war nur die Ordnung der Dinge umkehren:

// 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]; 

(Wenn Sie erstellt UIToolbar in Interface Builder, können Sie dort ihren Farbton ändern, und das gilt auch für die Schaltflächen).

Ich denke, der Farbton aktualisiert alle Tasten vor iOS 4, während in iOS 4 es nicht und beim Hinzufügen von Tasten, überprüfen sie für vorhandene Farbton. Aber das ist nur eine Vermutung. Die Lösung funktioniert sowieso ..

Hope this jemand hilft, und dass ich keine heilige SO Regeln verstieß ...

Prost!

10

Nun, es scheint eher ein OS-Fehler als ein Feature, da Navigationsleisten die Farbe ihres Elements ändern, wenn Sie ihre TintColor festlegen.

Wir haben festgestellt, dass beim Ändern des Stils des Elements die Farbe als Nebeneffekt aktualisiert wird. Das Folgende funktionierte in unserem Fall. Die ursprünglichen Schaltflächen sind umrandet, also ändern wir sie in Ebene und setzen sie wieder auf umrandet. Sie können einen komplizierteren und generischeren Code verwenden, der den aktuellen Stil speichert, einen anderen festlegt und dann zurückschaltet. Ich bin einfach zu faul, das zu tun. : D Wie auch immer, du kommst auf die Idee.

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; 
} 

Grüße, Rula.

+0

Sorry, hat nicht für mich gearbeitet –