Piszę moją pierwszą aplikację na iOS kierowaną na platformę iOS 5.0+. Używam protokołu UIAppearance
do dostosowania interfejsu użytkownika aplikacji.UMImage resizableImageWithCapInsets: nie działa zgodnie z oczekiwaniami
Próbuję zmienić tło dla UIBarButtonItem
w całej aplikacji. Z uwagi na to, że mój UIBarButtonItem
może zmieniać rozmiar w zależności od użytego tekstu lub ikony, próbuję użyć UIImage resizableImageWithCapInsets:
z moim tłem png.
Pierwotnie znalazłem kod, który potrzebowałem na Ray Wenderlich. Używając tego samego kodu, z obrazem, który jest bardzo podobny do tego użytego we wspomnianym samouczku, uzyskuję dziwne wyniki. Może to tylko mój brak doświadczenia z Cocoa Touch.
Oto kod, którego używam.
DreamsAppDelegate.m - customizeAppearance:
UIImage *btnBg = [[UIImage imageNamed:@"navBarButton-bg"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)];
[[UIBarButtonItem appearance] setBackgroundImage:btnBg
forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
Oto obraz png tło Próbuję użyć
A oto wynik (w symulatorze)
Dzięki za odpowiedź. Zamieszczony obraz jest @ 2x. Więc powinienem wyciąć mi pomiary na (0, 3, 0, 3)? Mówisz, że powinienem zrobić środek mojego obrazu o szerokości 1px? Rozumiem, dlaczego tak się stało, ale samouczek, którego używałam, miał obraz o wymiarach 30 na 40 pikseli, z tym samym gradientem stylu co ja i wydaje mi się, że działa fantastycznie (z UIEdgeInsetsMake, którego teraz używam, dostosowany po pikselu z powodu moich promieni narożnych). –
Oto sztuczka: możesz użyć 0 dla górnego i dolnego pola _if_ twój obraz tła ma taką samą wysokość jak przycisk paska nawigacji.Po prostu wypełnia to miejsce istniejącym gradientem. Twój obraz nie ma wysokości przycisku nawigacyjnego siatkówki, dlatego będzie rozciągany lub powtarzany w celu wypełnienia tej wysokości. Musisz podać rozmiar górnej i dolnej czapki (pierwszy i trzeci argument). Zacznij od '(7, 3, 7, 3)'. To pozostawi trochę pasków, ale miejmy nadzieję, że lepiej zrozumie, co się dzieje. – Dondragmer
Ahh, to ma trochę więcej sensu. Jaki jest rozmiar przycisku siatkówki siatkówki? Planuję elementy interfejsu użytkownika z pliku PSD o rozmiarze siatkówki, więc jeśli muszę zrobić przycisk navBar bg większy na pliku psd i wyeksportować go, aby uzyskać to, czego potrzebuję, to będzie to dla mnie łatwe. –