2012-03-24 9 views
1

Ich habe gelernt, dass in iOS 5 Eigenschaften, die mit UI_APPEARANCE_SELECTOR markiert sind, mit Aussehen gestylt werden können. ZB [[UINavigationBar Aussehen] setTintColor: ....]. Ich scheine jedoch nicht in der Lage zu sein, alle Elemente zu stylen. UIButton zum Beispiel hat keine Eigenschaften, die mit UI_APPEARANCE_SELECTOR gekennzeichnet sind, daher kann ich die obige Technik nicht verwenden, um sie zu stylen.So stylen Sie Elemente global, die Aussehen nicht unterstützt

Meine Frage ist: Wie kann ich Elemente global am besten (alle Erscheinungen in der Anwendung), wenn ich Aussehen nicht verwenden kann?

Im Moment habe ich einige Farben, Schriftarten, Schattenkorrekturen usw. definiert, die ich an vielen verschiedenen Stellen in meinem Code verwende. Dies erlaubt mir, Aussehen und Verhalten vieler Elemente zu ändern, aber es erlaubt mir immer noch nicht, alle Instanzen eines bestimmten Objekts mit nur einer Codezeile zu stylen.

bearbeiten

In Mangel an besseren Lösungen habe ich eine Reihe von categories mit einfachen Methoden wie folgt erstellt haben:

+ (UIButton *)customLabelWithFrame:(CGRect)frame andText:(NSString *)text; 

Auch fand ich, dass - in Kombination mit den beschriebenen Kategorien - stretchable images sind nett und nützlich.

Mit dem oben ich in einer global-ish Weise Stil der Lage bin, aber ich bin mit dem Ergebnis nicht zufrieden und ich hoffe immer noch eine bessere Lösung

+0

Ich habe festgestellt, dass einige Dinge, die nicht mit UI_APPEARANCE_SELECTOR markiert sind, jedoch mit UIAppearance funktionieren ... z. B. einige UIView-Eigenschaften. Ich werde das nicht als eine gute Antwort vorschlagen, weil es mit jeder Veröffentlichung brechen könnte, aber ich habe Fälle in diesem Fall gefunden, in denen die Logik über die Dokumentation triumphiert. –

+0

Interessant. Aber ich stimme zu, dass es vielleicht nicht der beste Weg ist, dies zu tun. –

Antwort

0

Was ist mit Standard-Unterklassen oder Fabrik Klassen, wie Sie selbst erwähnt !? Für Knöpfe verwende ich selbst Fabrikklassen.

+0

Fabriken für die verschiedenen UI-Elemente sind mir definitiv in den Sinn gekommen. Vielleicht bin ich zu faul, suche nach etwas zu leichtem, benötige unrealistisch kleine Mengen an Code ... –

0

Ich denke, eine sehr schöne Lösung zu finden, die Android sein könnte Art der Gestaltung von Schnittstellen. Android verwendet XML-Dateien, um die Benutzeroberfläche zu definieren. In der Tat arbeite ich an einer Bibliothek, die den Projekten, an denen ich arbeite, die gleichen Fähigkeiten geben soll. Es ist immer noch eine Arbeit in Arbeit/Experiment und als solche wirklich chaotisch Code (Sie wurden gewarnt!), aber es könnte Ihnen einige Ideen geben.

Ein Beispielprojekt kann hier heruntergeladen werden: http://dl.dropbox.com/u/6487838/WSLayoutManager.zip

Experiment ein wenig mit den XML-Dateien durch Kontrollen hinzufügen. Erstellen Sie benutzerdefinierte Steuerelement Klassen und instanziieren sie aus der XML-Datei, etc ... Es macht Spaß Sachen :)

+0

Danke für eine Antwort, die eine nette Alternative bietet. Ich habe Ihr Beispielprojekt heruntergeladen und es sieht sehr interessant aus. Ich habe jedoch mit WPF- und XAML-Dateien gearbeitet und bevorzuge den IB-Weg, kombiniert mit programmatischem Styling meiner Elemente in irgendeiner Weise, die ich gerade verbessere. –

Verwandte Themen