Frage

Android hat eine schöne Art und Weise dehnbare Bilder definieren, einen Neun-Patch genannt. Siehe diese Dokumente für eine Beschreibung des Konzepts . Die Idee ist, ein PNG-Bild mit einem 1-Pixel-Rande zu umgeben, wo man die dehnbaren Bereiche und die Polsterung Abmessungen des Bildes definieren. Das ist absolut brillant, und ich möchte die Idee in meinem iPhone App verwenden. Vor dem Schreiben meiner eigenen Neun-Patch UIImage loader dachte ich, ich würde sehen, ob man bereits vorhanden ist. Google liefert keine Ergebnisse so dass ich nicht viel Hoffnung, aber es tut nicht weh zu fragen, nicht wahr? : -)

EDIT: Leute, schätze ich die Antworten, aber ich weiß, über stretchableImageWithLeftCapWidth.... Ich suche nach Code, der einen Pfad @"foo.9.png" nimmt und eine dehnbare UIImage. Dieser Code wird zweifellos verwenden stretchableImageWithLeftCapWidth... intern. Ich bin sicher, ich könnte den Code selbst mit dieser Methode schreiben. Aber ich frage, ob jemand anderes hat es bereits getan.

War es hilfreich?

Lösung

Ich erhielt eine E-Mail von Tortuga22 Software, die mir mitgeteilt, dass sie eine solche Bibliothek erstellt und freigegeben haben sie unter der Apache-Lizenz:

Announcement: http://blog.tortuga22.com / 2010/05/31 / ankündigt-tortuga-22-ninepatch /

Der Quellcode: http://github.com/tortuga22/Tortuga22-NinePatch

Beispiel Nutzung:

// loads-and-caches ninepatch and rendered image of requested size
UIImage buttonImg = [TUNinePatchCache imageOfSize:buttonSize 
                                forNinePatchNamed:@"buttonNormalBackground"];
[self.buttonNeedingBackground setImage:buttonImg
                       forControlState:UIControlStateNormal];

Andere Tipps

Schauen Sie auch auf UIView der contentStretch Eigenschaft. Es ist robuster und gut erzogene als stretchableImageWithLeftCapWidth. Grundsätzlich funktioniert es nur um das dehnbare Rechteck innerhalb Ihres Bildes definieren und automatisch ein skalierte neun Patch zu schaffen. Dieses interne Rechteck kann alles sein - es ist nicht einmal in der Mitte des Bildes sein. Plus im Gegensatz zu stretchableImage dieser Methode richtig Grafiken schrumpfen und sich verhalten wie für Grafiken mit Beleuchtung oder Glanz erwartet. Ich kann nicht glauben, von jeder realen Anwendung, wo Sie mehr als das wollen würden.

Ja UIImage unterstützt etwas Vergleichbares. Siehe

- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight und die Dokumentation für leftCapWidth und topCapHeight

grundsätzlich das Bild wird in dem Bereich leftCapWidth Pixel vom linken und rechten Rand und topCapHeight Pixel von der Oberseite und der Unterseite nicht gestreckt. Wenn das Bild den Bereich innerhalb dieser Grenzen skaliert unterliegt Dehnung.

Alle UIImage Bilder unterstützen diese nativ. Standardmäßig sind die gesamten Bilder dehnbar, aber Sie können Kappen Set mit den leftCapWidth und topCapHeight Eigenschaften oder Sie können mit dem UIImage Verfahren ein aus einem bestehenden - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight erzeugen.

Sie, dass die Umsetzung in Apfel beachten Sie, wenn Sie eine oder beide dieser Werte wird der dehnbare Bereich gezwungen, ein einzelnes Pixel hoch / breit zu sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top