小编典典

以编程方式获取导航栏的高度

swift

我知道更多视图控制器(导航栏)的存在将UIView按其高度向下推。我也知道这个高度=
44px。我还发现,这种下推保持了[self.view].frame.origin.y = 0

因此,除了将其设置为常数之外,如何确定此导航栏的高度?

或者,较短的版本,如何确定我的UIView显示在导航栏的顶部?


灯泡开始点亮。不幸的是,如下所述,我还没有发现纠正问题的统一方法。

我相信我的整个问题都围绕着我的自动调整大小掩码。我得出的结论是,无论是否使用UIWebView,都存在相同的症状。症状是,对于Portrait来说,一切都是桃红色的。对于Landscape,最底部的UIButton在TabBar后面弹出。

例如,在一个UIView上,我从上到下都有:

UIView –既设置了弹簧(默认情况),也没有支柱

UIScrollView-
如果我设置了两个弹簧,并清除了所有其他内容(如UIView),则UIButton会侵入其上方的对象。如果我清除所有内容,则UIButton可以,但是最顶部的内容隐藏在StatusBar的后面。仅设置顶部支柱,UIButton向下弹出在Tab栏的后面。

UILabel和UIImage垂直向下–顶部支撑杆设置,其他位置均可灵活使用

只是为了完成一些具有UIWebView的图片:

UIWebView-支撑杆:顶部,左侧,右侧弹簧:两者

UIButton –没有设置,即到处都灵活

尽管我的灯泡昏暗,但似乎仍然充满希望。


请多多包涵,因为我需要的空间比简短回复的评论要多。

感谢您尝试了解我真正在钓鱼的目的…

1)每个UIViewController(一个TabBar应用)都有一个UIImage,一些文本以及其他内容。另一个共同点是底部的UIButton。在某些UIViewController上,我在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的高度。

好吧,你有它。


阅读 303

收藏
2020-07-07

共1个答案

小编典典

灯泡开始点亮。不幸的是,如下所述,我还没有发现纠正问题的统一方法。

我相信我的整个问题都围绕着我的自动调整大小掩码。我得出的结论是,无论是否使用UIWebView,都存在相同的症状。症状是,对于Portrait来说,一切都是桃红色的。对于Landscape,最底部的UIButton在TabBar后面弹出。

例如,在一个UIView上,我从上到下都有:

UIView –既设置了弹簧(默认情况),也没有支柱

UIScrollView-
如果我设置了两个弹簧,并清除了所有其他内容(如UIView),则UIButton会侵入其上方的对象。如果我清除所有内容,则UIButton可以,但是最顶部的内容隐藏在StatusBar的后面。仅设置顶部支柱,UIButton向下弹出在Tab栏的后面。

UILabel和UIImage 垂直向下–顶部支撑杆设置,其他位置均可灵活使用

只是为了完成一些具有UIWebView的图片:

UIWebView-支撑杆 :顶部,左侧,右侧弹簧:两者

UIButton –没有设置,即到处都灵活

尽管我的灯泡昏暗,但似乎仍然充满希望。

2020-07-07