2012-10-10 11 views
9

Die Verwendung des folgenden Codes zum Anpassen regulärer UIB-Schaltflächen wirkt sich auch auf UIBarButtonItems aus und löscht Schaltflächen in Textfeldern.Wie legt man die Darstellung für eine UIButton fest, ohne UIBarButtonItems zu beeinflussen?

[[UIButton appearance] setBackgroundImage:greenButtonImage forState:UIControlStateNormal]; 

ich nicht wollen auf alle letzteren Elemente anzupassen, nur regelmäßige runden rect Tasten. Ich realisiere die Verwendung von "appearanceWhenContainedIn": könnte verwendet werden, um eine benutzerdefinierte Darstellung für UIBarButtonItems und UITextField festzulegen, aber ich möchte, dass diese Schaltflächen Standard bleiben. Subclassing ist hier keine Option, da es für solch eine einfache Aufgabe nicht erforderlich sein sollte.

Es gibt eine ähnliche Frage, aber das Problem wird nicht behandelt. Why does -[[UIButton appearance] setBackgroundImage] affect the initial appearance of UIBarItem objects and how do you correct it?

+1

Ich konnte das UITextField-Problem beheben, indem ich diese speziell auf ein klares Hintergrundbild setzte. Keine schöne Lösung. –

+0

Wie initialisierst du deine UIBarButtonItems? Setzen Sie die "customView" -Eigenschaft auf ein UIButton-Objekt? Wenn Sie Beispielcode für das Erstellen eines UIBarButtonItems bereitstellen können, bin ich mir ziemlich sicher, dass ich Ihnen helfen kann ... Ich habe viele Anpassungen mit Darstellungsproxys und Balkenschaltflächen/UIB-Schaltflächen in meinen Apps vorgenommen und hatte diese Probleme nicht. – DiscDev

Antwort

2

Eine Lösung, die ich vorher benutzt habe, ist auf Null aus der „Background“ Eigenschaft für UIButtons innerhalb eines UINavigationBar enthalten:

[[UIButton appearanceWhenContainedIn:[UINavigationBar class], nil] setBackgroundImage:nil forState:UIControlStateNormal]; 

Dies sollten Sie ermöglichen, UIButtons in anderen Fällen anpassen, ohne die Berührung Einsen in einem UIBarButtonItem in der UINavigationBar.

Verwandte Themen