【发布时间】:2011-11-10 20:11:49
【问题描述】:
我知道更多视图控制器(导航栏)的存在将 UIView 的高度向下推。我也知道这个高度 = 44px。我还发现这个下推保持[self.view].frame.origin.y = 0。
那么我如何确定这个导航栏的高度,而不只是将它设置为一个常数呢?
或者,更短的版本,我如何确定我的 UIView 显示时导航栏在顶部?
灯泡开始亮了。不幸的是,我还没有找到一种统一的方法来纠正这个问题,如下所述。
我相信我的整个问题都集中在我的 autoresizingMasks 上。我得出结论的原因是存在相同的症状,无论有没有 UIWebView。那个症状是肖像的一切都是桃色的。对于横向,最底部的 UIButton 在 TabBar 后面弹出。
例如,在一个 UIView 上,我有,从上到下:
UIView - 两个弹簧设置(默认情况)和没有支柱
UIScrollView - 如果我设置了两个弹簧,并清除了其他所有内容(如 UIView),那么 UIButton 会侵入其正上方的对象。如果我清除所有内容,那么 UIButton 就可以了,但是最顶部的东西隐藏在 StatusBar 后面 仅设置顶部支柱,UIButton 在 Tab Bar 后面弹出。
UILabel 和 UIImage 下一个垂直 - 顶部支柱集,其他任何地方都灵活
只是为了完成少数拥有 UIWebView 的图片:
UIWebView - Struts:上、左、右 Springs:两者
UIButton – 没有设置,即随处灵活
虽然我的灯泡很暗,但似乎还有希望。
请多多包涵,因为我需要比提供简短回复评论更多的空间。
感谢您尝试了解我真正想要的是什么......所以就这样吧。
1) 每个 UIViewController(一个 TabBar 应用程序)都有一个 UIImage、一些文本以及顶部的任何内容。另一个共同点是底部的 UIButton。在一些 UIViewControllers 上,我在 UIButton 上方有一个 UIWebView。
所以,UIImage、文本等 UIWebView (on SOME) UIButton
围绕着以上所有的是一个 UIScrollView。
2) 对于那些有 UIWebView 的,它的 autoresizingMask 看起来像:
—
|
—
^
|
|
|—| ←----→ |—| | | 五 UIButton 的掩码没有任何设置,即在任何地方都灵活
在我的 -viewDidLoad 中,我调用我的 -repositionSubViews,在其中我执行以下操作:
如果没有 UIWebView,除了将我放置在 IB 中的 UIButton 居中之外,我什么都不做。
如果我确实有一个 UIWebView,那么我确定它的 *content*Height 并设置它的框架以包含整个内容。
UIScrollView *scrollViewInsideWebView = [[webView_ subviews] lastObject];
webViewContentHeight = scrollViewInsideWebView.contentSize.height;
[webView_ setFrame:CGRectMake(webViewOriginX, webViewOriginY,
sameWholeViewScrollerWidth, webViewContentHeight)]
完成此操作后,我会以编程方式将 UIButton 向下推,使其最终放置在 UIWebView 下方。
一切正常,直到我将它从纵向旋转到横向。
我在我的 -didRotateFromInterfaceOrientation 中调用我的 -repositionSubViews。
为什么我的 UIWebView 的内容高度不随旋转而变化?
从纵向到横向,内容宽度应该扩大,内容高度应该缩小。它在视觉上是应有的,但不是根据我的 NSLog。
无论如何,无论有没有 UIWebView,我谈到的按钮在横向模式下都会移动到 TabBar 下方,但不会向上滚动以显示。当我“大力”滚动时,我在 TabBar 后面看到它,但随后它“退回”到 TabBar 后面。
底线,这最后是我询问 TabBar 和 NavigationBar 高度的原因,因为 TabBar 将自身放置在 UIView 的底部,而 NavigationBar 将 UIView 向下推。
现在,我将在这里添加一两条评论,因为它们之前没有意义。
在没有 UIWebView 的情况下,我保留 IB 所看到的一切。
使用 UIWebView,我将 UIWebView 的 frame.height 增加到它的 contentHeight 并向上调整围绕所有子视图的 UIScrollView 的高度。
你有它。
【问题讨论】:
标签: ios objective-c swift uinavigationcontroller uinavigationbar