2012-03-29 6 views
0

Ich brauche ein paar Tasten in meiner iPhone App (die dann auf das iPad portiert werden können). Ich kenne mindestens 2 Methoden um solche Buttons zu erstellen: 1. Benutze den üblichen UIButton mit einem Bild als Hintergrund, das in jedem Grafikeditor gezeichnet werden kann. 2. Unterklasse UIButton und Implementieren eigener drawRect: -Methode mit CoreGraphics-Tools.Was ist der beste Weg, um eine benutzerdefinierte Schaltfläche zu zeichnen?

Ich weiß nicht warum, aber ich neige dazu, die zweite zu verwenden, da es schwieriger und leistungsschwächer scheint.

Habe ich recht, wenn ich bei der programmgesteuerten Implementierung der Schaltflächenzeichnung "plattformübergreifend" bin, so dass Sie nicht mehrere Symbole für unterschiedliche Auflösungen benötigen?

Wenn das ist wirklich einfach Symbol, einige Bezier Kurve oder Kreis mit Farbe gefüllt. Wird es immer noch langsamer vorformen als ein Image-Button?

Und kennt jemand ein Werkzeug, das eine grafische Oberfläche zum Zeichnen eines Vektorbildes hat, und konvertiert es dann in den CoreGraphics-Code, den man in die drawRect: -Methode einfügen kann?

Vielen Dank.

+1

Werfen Sie einen Blick auf: http://itunes.apple.com/gb/app/paintcode/id507897570 – hypercrypt

+0

Oh! Das sieht super aus. Vielen Dank für diesen Link. Benutzt du auch dieses Programm? – BartoNaz

+0

Ich habe den Test (auf der Website, Link über App Store) verwendet und werde es kaufen, wenn ich das Geld übrig habe. – hypercrypt

Antwort

1

Keine Sorge für die Verwendung von DrawRect. Im Gegensatz zu Windows speichert iOS die Ergebnisse in einer Bitmap und zeichnet sie nur neu, wenn sich die Dimensionen der Ansicht ändern (was Sie eigentlich wollen - da Sie sie erneut skalieren möchten).

Wie für eine Vektor-App können Sie die Opazität verwenden. Es hat eine Option zum Exportieren des Symbols in CoreGraphics-Quellcode: http://likethought.com/opacity/

+0

Danke für den Link. Bedeutet es, dass das Bild häufiger neu gezeichnet wird, wenn die Schaltfläche Hintergrundbild verwendet? Oder der Unterschied ist nur am Anfang: CG-Schaltfläche wird aus dem Code gezogen und Bild-Schaltfläche wird aus der Datei gelesen, aber danach, wenn keine Änderungen an den Dimensionen der Schaltfläche vorgenommen werden, verhalten sie sich auf die gleiche Weise: gerade Bitmap aus der Cache? – BartoNaz

+1

Korrigieren. UIView wird in 2 Fällen neu gezeichnet: beim expliziten Aufruf von setNeedsDisplay oder beim Ändern der Größe und contentMode = UIViewContentModeRedraw. Es ist wichtig zu beachten, dass das Ändern der Größe der UIView KEINEN Aufruf von drawRect generiert, es sei denn, es folgt auf einen Aufruf von NeedsRedraw ODER wenn contentMode = UIViewContentModeRedraw. In jedem anderen Fall skaliert das Betriebssystem die CACHED-Bitmap einfach entsprechend dem aktuellen contentMode. –

Verwandte Themen