Wiem, że obecność kontrolera widoku more (paska nawigacji) powoduje obniżenie UIView o jego wysokość. Wiem też, że ta wysokość = 44px. Odkryłem również, że to wciśnięcie utrzymuje [self.view].frame.origin.y = 0
.
Jak więc określić wysokość tego paska nawigacji, inaczej niż tylko ustawiając go na stałą?
Lub, w przypadku krótszej wersji, jak ustalić, czy mój UIView jest wyświetlany z paskiem nawigacyjnym u góry?
Żarówka zaczęła się zapalać. Niestety nie znalazłem jednolitego sposobu rozwiązania problemu, jak opisano poniżej.
Uważam, że cały mój problem koncentruje się na moich automatycznych maskach. I powód, dla którego doszedłem do wniosku, że istnieją te same symptomy, z UIWebView lub bez niego. A symptomem tego jest to, że w przypadku Portretu wszystko jest brzoskwiniowe. W przypadku krajobrazu, najniżej położony UIButton pojawia się za TabBar.
Na przykład na jednym UIView mam, od góry do dołu:
UIView - zestaw obu sprężyn (przypadek domyślny) i brak rozpórek
UIScrollView - jeśli ustawię dwie sprężyny i wyczyszczę wszystko inne (jak UIView), wówczas UIButton wkracza na obiekt bezpośrednio nad nim. Jeśli wyczyszczę wszystko, to UIButton jest OK, ale rzeczy na samej górze chowają się za StatusBar Ustawiając tylko górną rozpórkę, UIButton wyskakuje za Tab Bar.
UILabel i UIImage obok w pionie - zestaw górnych rozpórek, elastyczny wszędzie indziej
Aby uzupełnić obraz dla nielicznych, którzy mają UIWebView:
UIWebView - Rozpórki: górna, lewa, prawa Sprężyny: obie
UIButton - nic nie jest ustawione, czyli wszędzie jest elastyczny
Chociaż moja żarówka jest przygaszona, wydaje się, że jest nadzieja.
Proszę o wyrozumiałość, ponieważ potrzebowałem więcej miejsca niż przewidziano na krótką odpowiedź na komentarz.
Dziękuję za próbę zrozumienia, na co tak naprawdę łowię ... więc proszę bardzo.
1) Każdy UIViewController (aplikacja TabBar) ma UIImage, jakiś tekst i cokolwiek na górze. Innym wspólnym mianownikiem jest przycisk UIB na dole. W przypadku niektórych UIViewControllers mam UIWebView powyżej UIButton.
A więc UIImage, tekst itp. UIWebView (na SOME) UIButton
Otaczający wszystko powyższe jest UIScrollView.
2) Dla tych, którzy mają UIWebView, jego autoresizeMask wygląda następująco:
—
|
—
^
|
|
| - | ← ---- → | - | | | V Maska UIButton nie ma nic ustawionego, tzn. Jest wszędzie elastyczna
W ramach my -viewDidLoad wywołuję moje -repositionSubViews, w ramach których wykonuję następujące czynności:
Jeśli nie ma UIWebView, nie robię nic poza wyśrodkowaniem UIButton, który umieściłem w IB.
Jeśli mam UIWebView, określam jego * zawartość * wysokość i ustawiam ramkę tak, aby obejmowała całą zawartość.
UIScrollView *scrollViewInsideWebView = [[webView_ subviews] lastObject];
webViewContentHeight = scrollViewInsideWebView.contentSize.height;
[webView_ setFrame:CGRectMake(webViewOriginX, webViewOriginY,
sameWholeViewScrollerWidth, webViewContentHeight)]
Kiedy to zrobię, programowo wciskam przycisk UIButton w dół, aby znalazł się poniżej UIWebView.
Wszystko działa, dopóki nie obrócę go z portretu na krajobraz.
Wywołuję moje -repositionSubViews w ramach mojego -didRotateFromInterfaceOrientation.
Dlaczego wysokość zawartości mojego UIWebView nie zmienia się wraz z obrotem?
Od pionowej do poziomej szerokość treści powinna się zwiększyć, a wysokość powinna się zmniejszyć. Robi wizualnie tak, jak powinien, ale nie według mojego NSLog.
W każdym razie, z lub bez UIWebView, przycisk, o którym mówiłem, przesuwa się poniżej paska TabBar w trybie poziomym, ale nie przewija się w górę, aby go zobaczyć. Widzę go za TabBarem, kiedy „energicznie” przewijam, ale potem „cofa się” za TabBar.
Podsumowując, to ostatnie jest powodem, dla którego zapytałem o wysokość TabBar i NavigationBar, ponieważ TabBar umieszcza się na dole UIView, a NavigationBar wypycha UIView w dół.
Teraz dodam tutaj komentarz lub dwa, ponieważ wcześniej nie miałyby one sensu.
Bez UIWebView zostawiam wszystko tak, jak widzi IB.
Za pomocą UIWebView zwiększam frame.height UIWebView do jego contentHeight, a także dostosowuję w górę wysokość otaczającego widoku UIScrollView, który otacza wszystkie widoki podrzędne.
Cóż, masz to.