2010-05-07 5 views
21

Poziome pozycjonowanie UIBarButtonItems nie stanowi problemu, mogę po prostu zabezpieczyć przestrzeń za pomocą stałych/elastycznych elementów przestrzeni. Jednak nie mogę dopasować pionowego paska narzędzi. UIToolbar nie ma właściwości wyrównania, a UIBarButtonItem nie ma możliwości ustawienia ramki.Jak dostosować ramkę lub wyrównanie pionowe elementu UIBarButton zawartego przez instancję UIToolbar?

Muszę to zrobić, ponieważ używamy kombinacji niestandardowych ikon utworzonych za pomocą metody initWithImage i standardowych ikon utworzonych za pomocą metody initWithBarButtonSystemItem. Niestandardowe ikony nie są odpowiednio wyśrodkowane (są przesunięte w górę, względem ikon systemu, które są odpowiednio wyśrodkowane), więc pasek narzędzi wygląda niezręcznie.

+2

Polecam albo 1) użyj czegoś niestandardowego, a nie paska narzędzi; lub 2) naprawić obrazy, ponieważ będą one o wiele łatwiejsze do poprawienia. –

+0

1 nie jest dla mnie opcją. Nie podejmuję decyzji dotyczących projektowania wizualnego. Nie wiem, jak wygląda interfejs użytkownika, jakie są jego efekty ani gdzie się znajdują. 2 jest czymś, czego chciałbym raczej unikać, jeśli to możliwe, ponieważ oznacza to powrót do pracy projektanta wizualnego. Uciążliwe jest wielokrotne przekazywanie obrazów w jedną i drugą stronę, aby je poprawić, a następnie przeanalizować wyniki metodą prób i błędów. Nie ma również żadnej gwarancji, że to rozwiąże problem ... Nawet jeśli zmienimy rozmiar ikony, UIKit może nadal ją przesuwać. Jakieś inne rekomendacje? – akaii

+1

Wszelkie pomysły na to, jak to zrobić dla tekstu? Rozwiązanie imageinsets nie działa dla tekstu. – easythrees

Odpowiedz

1

Nie wydaje mi się to żadnym prostym, czystym sposobem na zrobienie tego, więc poszedłem z brzydkim, ale funkcjonalnym hackowaniem: zagnieżdżanie. Utknąłem kolejny UIToolbar zawierający przycisk do UIView, który ustawiłem jako UIBarButtonItem na oryginalnym pasku narzędzi za pomocą initWithCustomView. Drugi pasek UIToolbar może swobodnie poruszać się w obrębie UIView, a rzeczywista ikona zachowuje wszystkie właściwości obiektu UIBarButtonItem.

Ugh.

3

Właściwość imageInsets z UIBarItem?

34

Tak, imageInsets działało dobrze dla mnie!

float topInset = 4.0f; 
myUIBarButton.imageInsets = UIEdgeInsetsMake(topInset, 0.0f, -topInset, 0.0f); 

przenosi obraz o 4 piksele w dół.

tego uniknąć:

float topInset = 4.0f; 
myUIBarButton.imageInsets = UIEdgeInsetsMake(topInset, 0.0f, 0.0f, 0.0f); 

Przesuwa obraz 4 piksele w dół (ale przeskalowanie wysokości obrazu tak wygląda skompresowany).

+0

Cieszę się, że nie jestem jedyną osobą z tym problemem. Chociaż "topInset = 2.0f" pracował dla mnie. –

+0

dziękuję, że naprawdę zaoszczędziłeś mój czas –

Powiązane problemy