Frage

Ich mag Dialog Grenzen implementieren, dass Maßstab für die Größe benötige ich den Dialog zu sein. Vielleicht gibt es einen besseren konventionelleren Namen für diese Art der Sache. Wenn es, wenn jemand den Titel bearbeiten würde, dass wäre toll.

Wie auch immer, ich möchte, dies zu tun, damit ich Dialoge jeder Größe, ohne die visuellen Artefakte haben kann, die mit Skalierung Grenze Kunst kommen zu klein, groß, oder verrückten unproportional dimentions. Ich habe ein paar Ideen, wie dies geschehen ist, aber ich bin nicht sicher, welche für iphone besser ist. Ich habe ein paar Fragen.

1) Soll ich eine Aufnahme Ansicht Objekt, das im Grunde genommen seine drawRect Methode Überlastungen und zeichnet die Bilder, wo sie an ihrem geeigneten Maßstab sein sollten, wenn die Methode aufgerufen wird, oder soll ich Haupt einer enthält Ansicht Objekt, das nur 8 UIImageViews enthält? Ich vermute, dass dieser Ansatz nicht funktioniert, wenn ich brauche die resultierende Dialogklasse wie in einer Animation aktiv zu skalieren.

1 b) Wenn drawRect Überlastung ist der Weg zu gehen, hat jemand einig Beispiel-Code oder einen Link zu einem Beispiel, das ein Bild direkt von drawRect demonstriert Zeichnung ()?

2) Ist es besser, im Allgemeinen zu schaffen

a) ein 3 x 3 Bild wobei die Segmente in ihrem entsprechenden 1x1 Gitter des Bildes? Wenn ja, ist es einfach, von einem Teil dieses Bildes auf meine Zielansicht in drawRect zu ziehen (wenn die frühere Annahme richtig ist, dass ich soll drawRect verwenden)?

b) Die Stücke separat in 8 verschiedenen Dateien?

UPDATE: mit nur diesen Vermögenswerten Um zu klären, ist die Idee, jede kundenspezifische Grenze Kunst zu nehmen und in der Lage sein, den zweiten zu strecken, 4., 6. und 8. Zelle (in einer 3x3-Zellengitter) eine Grenze jeder Größe zu bilden. nur ein einfaches Bild Dehnen würde zu einer Verzerrung der Ecken führen, so dass ich diese gerade numerierten Zellen strecken möchte je nach Bedarf und Klebrigkeit an den Ecken so gibt es keine Verzerrung. Ich habe dies vor getan gesehen dachte, es könnte eine Standard-Sache sein und einen Standard-Namen es andere als das, was ich es genannt.

Wie auch immer, ich wurde darauf hingewiesen, dass das Hinzufügen 8 UIImageViews in einen Behälter nicht so effizient wie die Erstellung des UIImages on the fly in drawRect so dass Ansatz nahm mit CGContextDrawImage wäre (), nachdem sie die notwendigen Transformationen in den Kontext der Anwendung der übersetzen und skalieren Y. Da diese Funktion zieht von der linken unteren Ecke eines Bildes, sondern auf einer oberen linken origined UIView, ist das Bild auf den Kopf ohne die Invert Y-Achse. Ich bemerkte den Vorschlag UIImage Funktionen zu nutzen wie drawAtPoint funktioniert auch und in ähnlicher Weise, aber für die Invert seit UIImage in der gleichen Ausrichtung wie UIViews zieht. Ich werde meine Umsetzung mit dem ehemaligen fortsetzen und sehen, wie es geht, aber eine andere Frage.

würde jemand passieren zu wissen, welche diese Ansätze mehr efficeint ist, schneller, etc?

War es hilfreich?

Lösung

Ich bin nicht sicher, folgen ich, aber hier ist meine beste Chance auf eine Antwort ...

drawRect verwenden: oder Hinzufügen einzelner UIImageViews zu einer übergeordneten Ansicht ist ganz Ihnen überlassen. UIImageView gibt Ihnen ein wenig von gekapselten Funktionalität kostenlos, aber ansonsten sind sie gleich so weit wie Erscheinungen gehen.

Wenn Sie die drawRect Weg gehen wollen, müssen Sie nur UIImage des drawAtPoint verwenden: Methode. Sind die Mathematik für, wo Sie wollen es sein, und ziehen Sie es. Sie können Ihre Punkte auf der Grundlage der übergeordneten Ansicht Dimensionen berechnen.

Was der Skalierung, es ist nicht möglich, diese Bilder, um die Größe, ohne sie zu skalieren, so dass ich im Voraus planen würde und die Originale so groß machen oder größer, als Sie jemals erwarten, dass sie angezeigt werden.

Ich hoffe, das hilft ein wenig?

Prost

Andere Tipps

Wenn Sie eine Grenze auf einem Dialogfeld möchten, ist ein UIView die Box unter der Annahme (oder Unterklasse), und stellen Sie die Grenze Eigenschaften der Schicht und lassen Sie das System die Grenze für Sie zeichnen.

#import <QuartzCore/QuartzCore.h> 
// ... 

view.layer.borderWidth = 2;
view.layer.borderColor = [UIColor whiteColor].CGColor; 
view.layer.cornerRadius = 0;  // 0=square corners, >0 for rounded
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top