Я знаю, что наличие дополнительного контроллера вида (панель навигации) толкает UIView на его высоту. Я также знаю, что эта высота = 44px. Я также обнаружил, что этот толчок поддерживает [self.view].frame.origin.y = 0
.
Итак, как мне определить высоту этой панели навигации, кроме установки ее постоянной?
Или, более короткая версия, как мне определить, что мой UIView отображается с панелью навигации вверху?
Лампочка начала зажигаться. К сожалению, я не нашел единого способа решения проблемы, как описано ниже.
Я полагаю, что вся моя проблема связана с моими масками авторазмера. И причина, по которой я пришел к выводу, что существуют те же симптомы, с UIWebView или без него. И этот признак в том, что для Портрета все замечательно. Для Пейзаж самый нижний UIButton выскакивает за TabBar.
Например, на одном UIView у меня сверху вниз:
UIView - установлены обе пружины (регистр по умолчанию) и нет распорок
UIScrollView - если я установлю две пружины и очисту все остальное (например, UIView), то UIButton вторгается в объект, находящийся непосредственно над ним. Если я все очищаю, то UIButton в порядке, но материал в самом верху прячется за StatusBar. Устанавливая только верхнюю распорку, UIButton выскакивает за панелью вкладок.
UILabel и UIImage следующие по вертикали - набор верхних распорок, гибкие повсюду
Просто чтобы завершить картину для тех, у кого есть UIWebView:
UIWebView - распорки: сверху, слева, справа, пружины: оба
UIButton - ничего не установлено, т. Е. Гибко везде
Хотя моя лампочка тусклая, кажется, есть надежда.
Пожалуйста, потерпите меня, потому что мне нужно больше места, чем предусмотрено для короткого комментария.
Спасибо за попытку понять, на что я действительно ловлю рыбу ... так что вот так.
1) Каждый UIViewController (приложение TabBar) имеет UIImage, некоторый текст и все, что находится сверху. Другой общий знаменатель - это UIButton внизу. На некоторых контроллерах UIView у меня есть UIWebView над кнопкой UIB.
Итак, UIImage, текст и т. Д. UIWebView (на НЕКОТОРЫХ) UIButton
Все вышеперечисленное окружено UIScrollView.
2) Для тех, у кого есть UIWebView, его маска автоматического изменения размера выглядит следующим образом:
—
|
—
^
|
|
| - | ← ---- → | - |
|
|
В
Маска UIButton не имеет ничего установленного, то есть гибкая везде
В моем -viewDidLoad я вызываю мои -repositionSubViews, в которых я делаю следующее:
Если UIWebView нет, я ничего не делаю, кроме центрирования кнопки UIB, которую я поместил с IB.
Если у меня есть UIWebView, я определяю его * content * Height и устанавливаю его рамку, чтобы охватить весь контент.
UIScrollView *scrollViewInsideWebView = [[webView_ subviews] lastObject];
webViewContentHeight = scrollViewInsideWebView.contentSize.height;
[webView_ setFrame:CGRectMake(webViewOriginX, webViewOriginY,
sameWholeViewScrollerWidth, webViewContentHeight)]
Как только я это сделаю, я программно нажимаю кнопку UIB вниз, чтобы она оказалась ниже UIWebView.
Все работает, пока я не поверну его из Портрета в Пейзаж.
Я вызываю мои -repositionSubViews в моей -didRotateFromInterfaceOrientation.
Почему высота содержимого моего UIWebView не изменяется при вращении?.
От портрета до пейзажа ширина содержимого должна увеличиваться, а высота содержимого должна уменьшаться. Это происходит визуально, как и должно, но не в соответствии с моим NSLog.
В любом случае, с или без UIWebView, кнопка, о которой я говорил, перемещается ниже TabBar, когда находится в ландшафтном режиме, но она не будет прокручиваться вверх, чтобы ее можно было увидеть. Я вижу его за TabBar, когда я "энергично" прокручиваю, но затем он "откатывается" за TabBar.
В итоге, эта последняя причина, по которой я спросил о высоте TabBar и NavigationBar, потому что TabBar располагается в нижней части UIView, а NavigationBar толкает UIView вниз.
Теперь яЯ собираюсь добавить один или два комментария, потому что они не имели бы смысла раньше.
Без UIWebView я оставляю все как есть у IB.
С UIWebView я увеличиваюframe.height UIWebView к его contentHeight, а также отрегулировать вверх высоту окружающего UIScrollView, который окружает все вложенные представления.
Ну, вот, у вас это есть.