Próbuję uzyskać widoczny obszar rysunku dla podklasy GLKViewController. W systemie iOS 7 wyznaczyłbym orientację, a następnie odpowiednio dostosował [UIScreen mainScreen] .bounds.size. Wtedy odejmowałbym wysokości navigationBar i statusBarFrame i voila! - rzeczywisty rozmiar mojego obszaru rysowania.viewWillTransitionToSize i nieprawidłowy navigationBar i statusBarFrame wysokości
Teraz staram się aktualizować na iOS 8 za pomocą metody viewWillTransitionToSize, jednak po obróceniu urządzenia (mam UIInterfaceOrientationMaskAll na), rozmiar, który jest przekazywany, jest nieprawidłowy. W rzeczywistości szerokość jest poprawna dla widoku, ale nie dla wysokości (która obejmuje wysokość paska nawigacji i wysokość paska stanu).
Widziałem kilka pytań na temat SO, które dotyczą, ale nic, co faktycznie zajmuje się tym problemem, a przynajmniej nic, co mi pomogło.
Nie wydaje mi się, że robi coś ciekawego, poprawcie mnie jeśli się mylę:
- (void)viewWillTransitionToSize : (CGSize) size
withTransitionCoordinator : (id<UIViewControllerTransitionCoordinator>) coordinator
{
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
NSLog(@"size changed : orig(%f,%f) mainScreen(%f,%f)", size.width, size.height, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height);
[self updateViews:size];
}
wyjść za przejście do góry:
size changed : orig(568.000000,256.000000) mainScreen(320.000000,568.000000)
gdzie wysokość przekazywane z viewWillTransitionToSize wygląda następująco:
320 - (2*32) = 256
, a następnie następna rotacja do portretu:
size changed : orig(320.000000,536.000000) mainScreen(568.000000,320.000000)
gdzie ta wysokość przekazywane z viewWillTransitionToSize się:
568 - 32 = 536
dzieje się wysokość paska nawigacyjnego w układzie poziomym (jeśli nic nie znaczy).
Moje pytania brzmią: w jaki sposób viewWillTransitionToSize ma taki rozmiar? W jaki sposób bierze pod uwagę dodatkowe paski, które zmieniają rozmiary lub znikają w zależności od orientacji? A co najważniejsze, dlaczego używa tych niewłaściwych wysokości?
jest to ten sam problem mam do czynienia teraz - i uzyskać dokładnie takie same numery jak otrzymujesz kiedy mój obraca się na ekranie, z tym samym rozbieżności (32 lub 64 punkty). Problem polega na tym, że używam argumentu "rozmiar", aby uzyskać nową wysokość i szerokość widoku, a następnie użyć tych liczb do obliczenia rozmiaru podglądu podrzędnego. – Natalia