Podczas używania opcji resizableImageWithCapInsets: w celu utworzenia obrazu dla UIButton jest tylko stan normalny (stan ustaw obraz przy użyciu funkcji setBackgroundImage: forState:) Prace. Wszystkie inne stany pokazują przerwę zamiast rysowanego obrazu. UIButton mówi, że jeśli żaden obraz nie jest ustawiony dla określonego stanu, obraz stanu normalnego zostanie użyty z nakładką dla stanów wyłączonych i wybranych.Używanie opcji resizableImageWithCapInsets: obraz przycisku działa tylko dla zestawu stanów, inne stany przedstawiają "przerwę"
Oto stan normalny:
Oto wybrany stan:
A oto obraz źródłowy:
Wyraźnie jest to obraz skalowalny, który dostarczyłem, ale obraz nie rysuje obszaru o zmienionym rozmiarze. (Możesz zobaczyć lewą i prawą krawędź, ale środkowy obszar, który ma zostać rozciągnięty, nie jest narysowany).
Co ciekawe, stretchableImageWithLeftCapWidth: topCapHeight: działa. Jest to przestarzała metoda w iOS 5, ale z tą różnicą, która pojawia się w nowym interfejsie API, mogę zostać zablokowana.
Rozumiem, że mogę dostarczyć więcej zdjęć dla każdego stanu, ale to pokonuje cel, jaki próbuję osiągnąć, aby zmniejszyć ślad pamięci oraz dodatkowo uzależnić od mojego grafika, którego chciałbym uniknąć.
// This is the gist of the code being used
UIImage* image = [UIImage imageNamed:@"button.png"];
UIEdgeInsets insets = UIEdgeInsetsMake(image.size.height/2, image.size.width/2, image.size.height/2, image.size.width/2);
image = [image resizableImageWithCapInsets:insets];
[self.button setBackgroundImage:image forState:UIControlStateNormal];
// Even doing the following results in the same behaviour
[self.button setBackgroundImage:image forState:UIControlStateSelected];
Dodałem fragment kodu i przechowywano zrzuty ekranów (przycięte do odpowiedniego obszaru). – NSProgrammer
To jest dziwne ... Chciałbym aby zobaczyć przycisk.png, jeśli moglibyśmy. –
http://i40.tinypic.com/ea35zq.png - Mogę dodać tylko 2 linki do postu jako nowego użytkownika, ale tutaj jest przycisk sourece.png – NSProgrammer