Я знаю, що наявність більш контролера перегляду (навігаційної панелі) штовхає UIView на його висоту. Я також знаю, що ця висота = 44 пікс. Я також виявив, що цей натиск підтримує [self.view].frame.origin.y = 0
.
Тож як я можу визначити висоту цієї панелі навігації, окрім того, щоб просто встановити її на постійну?
Або, коротша версія, як я можу визначити, що мій UIView відображається з навігаційною панеллю вгорі?
Лампочка почала включатися. На жаль, я не знайшов єдиного способу виправлення проблеми, як описано нижче.
Я вважаю, що вся моя проблема зосереджується на моїх автоматизованих масках. І тому я прийшов до висновку, що такі самі симптоми існують, з UIWebView або без нього. І цей симптом полягає в тому, що для портрета все чудово. Для пейзажу найменший UIButton спливає вниз за TabBar.
Наприклад, на одному UIView я маю зверху вниз:
UIView - встановлені як пружини (випадок за замовчуванням), так і ніякі підставки
UIScrollView - Якщо я встановив дві пружини і очистив все інше (як UIView), то UIButton вторгнеться в об'єкт безпосередньо над ним. Якщо я все очищую, то UIButton гаразд, але матеріал у самій верхній частині ховається позаду StatusBar Setting тільки верхньої підпірки, UIButton вискакує за панелі вкладок.
Наступний вертикально UILabel і UIImage - верхня опора, гнучка скрізь
Просто, щоб доповнити зображення для кількох, які мають UIWebView:
UIWebView - підкоси: верхній, лівий, правий Пружини: обидва
UIButton - нічого не встановлено, тобто гнучко скрізь
Хоча моя лампочка тьмяна, мабуть, є надія.
Будь ласка, візьміть мене з собою, бо мені було потрібно більше місця, ніж передбачено для короткого коментаря відповіді.
Дякую за те, що спробую зрозуміти, на що я насправді ловлю рибу ... так ось що.
1) Кожен контролер UIViewController (додаток TabBar) має в своєму розпорядженні UIImage, деякий текст та інше. Ще один поширений знаменник - це UIButton внизу. На деяких UIViewControllers я UIWebView над UIButton.
Отже, UIImage, текст тощо. UIWebView (для деяких) UIButton
Оточуючи все вищесказане - це UIScrollView.
2) Для тих, хто має UIWebView, його автоматична маска виглядає так:
—
|
—
^
|
|
| - | ← ---- → | - | | | V Маска UIButton не має нічого встановленого, тобто гнучка скрізь
У межах -viewDidLoad я називаю my -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, я залишаю все так, як бачить ІБ.
За допомогою UIWebView я збільшую фрейм UIWebView на його contentHeight, а також регулюю вгору висоту навколишнього UIScrollView, що оточує всі підпогляди.
Ну там у вас є.