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