/ / Pasek zakładek jest przesunięty w dół poza granice symulatora - iphone, objective-c, ios, xcode, ios-simulator

Pasek zakładek przesuwa się poza granicami symulatora - iphone, cel-c, ios, xcode, ios-simulator

Utworzyłem pusty projekt (XCode 4.2 IOS SDK 5), dodałem do niego nowy widok i uczyniłem z niego główny kontroler widoku wewnątrz appDelegate, więc gdy aplikacja działa, wyświetla ten widok poprawnie, jednak dodałem do widoku kontroler tabulacji, utworzyłem IBOutlet za to w nowo utworzonym widoku i dodałem tę linię do metody viewDidLoad widoku:

[self.view addSubview:self.tabController.view];

dzięki czemu pasek z kartami ładuje się poprawnie w telefonie iPhonesymulator, ale z małym problemem, którego nie mogłem naprawić: połowa tego paska zakładek jest przesunięta w dół symulatora, co zapobiega pojawianiu się tytułów zakładek, dokładnie tak, jak na poniższym zrzucie ekranu:

zrzut ekranu

Jak mogę rozwiązać ten problem?

Odpowiedzi:

2 dla odpowiedzi № 1

Najprawdopodobniej dzieje się tak z powodu paska stanu. Ale ponieważ widok podrzędny, w którym można wstawiać kontroler, może mieć dowolny rozmiar, najbardziej uniwersalnym rozwiązaniem jest:

[tabController.view setFrame:self.view.bounds];

(zakładając self.view - to widok, w którym go dodajesz)


1 dla odpowiedzi nr 2

Widok z włączonym paskiem kart ma wysokość 480 pikseli, alewidok, do którego go dodajesz, jest mniejszy z powodu paska stanu. Oznacza to, że zaczyna się o 22 piksele za nisko, a kończy o 22 piksele za nisko - od dołu ekranu.

Jeśli chcesz, aby pasek kart był globalny dla aplikacji, połącz go z IBOutlet w delegacie aplikacji, zrób to w metodzie didFinishLaunching:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// ...

// Add the tab bar controller"s view to the window and display.
[window addSubview:tabController.view];
[window makeKeyAndVisible];

return YES;
}

Spowoduje to dodanie go do głównego okna zamiast do innego widoku. Spowoduje to zakotwiczenie go na górze ekranu, więc dół będzie u dołu ekranu.