2013-06-03 17 views
8

Mam aplikację, która używa Storyboards do wyświetlania dwóch ekranów. Pierwszy to lista (na zdjęciu jako "Lista"), a druga to mapa ("Térkép"). Każdy widok ma lewy i prawy przycisk nawigacyjny. Naciśnięcie prawego przycisku powoduje przesunięcie widoku mapy do kontrolera nawigacyjnego. Przycisk Wstecz jest ukryty ręcznie na podstawie metody mapy viewDidLoad.UIBarButtonItem rozmiary różnią się

List view Map view

Chodzi o to, że dlaczego elementy przycisk paska mieć inny rozmiar na każdym ekranie? Jak mogę kontrolować rozmiar przycisków?

Obrazy na przyciskach mają ten sam rozmiar. Skórowanie odbywa się w AppDelegate pomocą ustawień Wygląd:

// navbar background 
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"bg-titlebar.png"] 
            forBarMetrics:UIBarMetricsDefault]; 

// navbar button background 
[[UIBarButtonItem appearance] setBackgroundImage:[[UIImage imageNamed:@"btn-main.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(4.0, 4.0, 4.0, 4.0) resizingMode:UIImageResizingModeStretch] 
             forState:UIControlStateNormal 
             barMetrics:UIBarMetricsDefault]; 
[[UIBarButtonItem appearance] setBackgroundImage:[[UIImage imageNamed:@"btn-main-active.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(4.0, 4.0, 4.0, 4.0) resizingMode:UIImageResizingModeStretch] 
             forState:UIControlStateHighlighted 
             barMetrics:UIBarMetricsDefault]; 

// back button background 
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[[UIImage imageNamed:@"btn-back.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(4.0, 12.0, 4.0, 4.0) resizingMode:UIImageResizingModeStretch] 
                forState:UIControlStateNormal 
               barMetrics:UIBarMetricsDefault]; 
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[[UIImage imageNamed:@"btn-back-active.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(4.0, 12.0, 4.0, 4.0) resizingMode:UIImageResizingModeStretch] 
                forState:UIControlStateHighlighted 
               barMetrics:UIBarMetricsDefault]; 
+0

dobrze w moim przypadku ta formuła zawsze pracował dla mnie. Być może podasz granice przycisku paska osobno lub problem z orientacją. –

+0

Pytania z obrazami są zawsze mile widziane :) – Anupdas

+0

Spróbuj ustawić przyciski w viewWillAppear, jeśli aktualnie używasz viewDidLoad –

Odpowiedz

1

można uzyskać dwa identyczne UIBarButtonsItem tworząc go w jednym segue a następnie skopiuj wklejania przycisk w innym segue (przynajmniej to działa w moim przypadku, ale raj "udało się zidentyfikować dotychczasową przyczynę problemu).

Jeśli tworzenie bezpośrednio UIBarButtonItem nie działa, upuść UIButton w NavigationItem i utworzy automatycznie UIBarButtonItem z UIButtonem wewnątrz (patrz poniżej obrazu). W ten sposób można skonfigurować obraz lub inne atrybuty nieobecne w obiekcie UIBarButtonItem. Gdy będziesz zadowolony z wyglądu swojego Uibuttonu (osadzonego w przycisku paska), skopiuj go do innego segue i zachowaj ten sam rozmiar.

UIBarButtonItem vs UIButton inside UIBarButtonItem

+0

Próbowałem, niestety, nie pomaga :( – gklka

+0

Czy próbowałeś, zamiast upuszczać i UIBarButtonItem i ustawić obraz za pośrednictwem proxy wygląd, aby upuścić UIButton i ustawić obraz bezpośrednio? Wiem, nie jest tak wygodne, ale ja Mam nadzieję, że to rozwiąże twój problem – jmg

+0

Wierzę, że UIButtons spadł do UINavitaionBars stają się automatycznie UIBarButtonItems Próbowałem również próbowałem tworzyć UIBarButtonItems z kodu, ale wynik był dokładnie taki sam. – gklka

Powiązane problemy