Czy jest 9-patch loader dla iPhone ' a?
Android ma ładny sposób definiowania rozciągliwych obrazów zwanych dziewięciopasek. Zobacz te dokumenty dla opisu koncepcji. Chodzi o to, aby otoczyć obraz png 1-pikselową obwódką, w której można zdefiniować rozciągliwe obszary i wymiary wypełnienia obrazu. To jest absolutnie genialne i chciałbym wykorzystać ten pomysł w mojej aplikacji na iPhone ' a. Przed napisaniem własnego 9-patcha do UIImage loader pomyślałem, że zobaczę czy już istnieje. Google nie wraca żadnych rezultatów, więc nie mam wiele nadziei, ale nie zaszkodzi zapytać, prawda? :-)
EDIT: Ludzie, doceniam odpowiedzi, ale wiem o stretchableImageWithLeftCapWidth...
. Szukam kodu, który przyjmuje ścieżkę @"foo.9.png"
i zwraca rozciągliwy UIImage
. Ten kod bez wątpienia będzie używał stretchableImageWithLeftCapWidth...
wewnętrznie. Jestem pewien, że sam mógłbym napisać kod za pomocą tej metody. Ale pytam, czy ktoś już to zrobił.
4 answers
Otrzymałem e - mail od oprogramowania Tortuga22, który poinformował mnie, że stworzyli taką bibliotekę i udostępnili ją na licencji Apache:
Ogłoszenie: http://blog.tortuga22.com/2010/05/31/announcing-tortuga-22-ninepatch/
Kod źródłowy: http://github.com/tortuga22/Tortuga22-NinePatch
Przykładowe użycie:
// loads-and-caches ninepatch and rendered image of requested size
UIImage buttonImg = [TUNinePatchCache imageOfSize:buttonSize
forNinePatchNamed:@"buttonNormalBackground"];
[self.buttonNeedingBackground setImage:buttonImg
forControlState:UIControlStateNormal];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-04 17:46:58
Spójrz również na właściwość contentStretch UIView. Jest bardziej wytrzymały i dobrze zachowujący się niż rozciągliwy obraz z prędkością światła. Zasadniczo działa, po prostu definiując rozciągliwy prostokąt w obrazie i automatycznie tworząc skalowaną dziewięć łat. Ten wewnętrzny prostokąt może być wszystkim - nie musi nawet znajdować się na środku obrazu. Plus w przeciwieństwie do stretchableImage ta metoda poprawnie zmniejszy grafikę i zachowa się zgodnie z oczekiwaniami w przypadku grafiki z oświetleniem lub połyskiem. I can ' t think każdej aplikacji w świecie rzeczywistym, w której chciałbyś czegoś więcej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-13 15:53:28
Tak UIImage
obsługuje coś takiego. Zobacz
- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight
i dokumentacja dla leftCapWidth i topCapHeight
Zasadniczo obraz nie jest rozciągnięty w obszarze levercapwidth pikseli od lewej i prawej krawędzi i topCapHeight pikseli od góry i dołu. Gdy obraz jest skalowany, obszar wewnątrz tych granic jest rozciągany.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-16 02:32:39
Wszystkie UIImage
obrazy wspierają to natywnie. Domyślnie całe obrazy są rozciągliwe, ale można ustawić caps za pomocą właściwości leftCapWidth
i topCapHeight
lub wygenerować je z istniejącego UIImage
za pomocą metody - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight
.
Należy pamiętać, że w implementacji apple, gdy ustawisz jedną lub obie z tych wartości, rozciągliwy obszar jest zmuszony do jednego piksela wysoki / szeroki.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-23 14:47:26