我知道更多视图控制器(导航栏)的存在将 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(在某些地方) UIButton
围绕上述所有内容的是一个 UIScrollView。
2)对于那些有 UIWebView 的,它的 autoresizingMask 看起来像:
—
|
—
^
|
|
|—| ←----→ |—| | | V 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 的高度。
那么你有它。