我知道更多视图控制器(导航栏)的存在将 UIView 的高度推低。我也知道这个高度=44px。我还发现这种下推可以维持[self.view].frame.origin.y = 0
.
那么,除了将其设置为常量之外,如何确定该导航栏的高度呢?
或者,更短的版本,如何确定我的 UIView 显示时导航栏位于顶部?
灯泡开始亮起来。不幸的是,我还没有找到纠正该问题的统一方法,如下所述。
我相信我的整个问题集中在我的 autoresizingMasks 上。我得出结论的原因是,无论有没有 UIWebView,都存在相同的症状。这个症状是肖像的一切都是桃色的。对于横向,最底部的 UIButton 在 TabBar 后面弹出。
例如,在一个 UIView 上,我从上到下:
UIView – 均设置弹簧(默认情况)且无支柱
UIScrollView - 如果我设置两个弹簧,并清除其他所有内容(如 UIView),则 UIButton 会侵入其上方的对象。如果我清除所有内容,那么 UIButton 就可以了,但是最顶部的东西隐藏在 StatusBar 后面 仅设置顶部支柱,UIButton 会在选项卡栏后面弹出。
UILabel 和 UIImage 垂直排列 – 顶部支柱设置,其他地方都很灵活
只是为了让少数拥有 UIWebView 的人完成图片:
UIWebView - Struts:顶部、左侧、右侧 Springs:两者
UIButton – 没有任何设置,即随处灵活
虽然我的灯泡昏暗,但似乎还有希望。
请耐心等待,因为我需要比简短回复评论更多的空间。
感谢您尝试了解我真正想要的东西......所以就这样。
1)每个UIViewController(一个TabBar应用程序)都有一个UIImage,一些文本以及顶部的任何内容。另一个共同点是底部有一个 UIButton。在某些 UIViewController 上,我在 UIButton 上方有一个 UIWebView。
所以,UIImage、文本等 UIWebView(在某些上)UIButton
围绕以上所有内容的是 UIScrollView。
2)对于那些拥有 UIWebView 的人,其 autoresizingMask 如下所示:
—
|
—
^
|
|
|—| ←----→ |—|
|
|
V
UIButton 的 mask 没有任何设置,即到处都是灵活的
在我的 -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 的高度。
好吧,你已经有了。