使用带半透明导航栏的UISearchDisplayController时,调暗区域错位

时间:2014-04-15 09:50:44

标签: ios uinavigationbar uisearchdisplaycontroller

当我将navigationBar切换为半透明时,我的UISearchDisplayController发疯了。

灰度区域被64px错位,对于结果表中的第一行也是如此。 我知道如何修复resultTableView的错位,但是我找不到修复灰色区域框架的方法。

奇怪的是,当半透明设置为YES时,我发现我的主视图位于origin.y = 64.0f。 它发生在viewDidLoad,viewDidAppear之间。如果我更改它可以工作,但导航控制器中的视图之间的转换会被破坏。

enter image description here

=============

问题解决:extendedLayoutIncludesOpaqueBars

1 个答案:

答案 0 :(得分:1)

检查搜索栏的AutoLayout / AutoResizingMask设置。

同时确保您不会手动修改条形框架,因为系统会尝试将条形图设置为沿着灰色视图的位置,并且结果为'表格视图。


当您将translucent属性和automaticallyAdjustsScrollViewInsets设置为YES时(默认):a)视图在导航栏下拉伸,b)顶部contentInset为添加到基础UIScrollView(表视图是子类)。

我的猜测是,由于某种原因,只有b)发生在你的案件中。您可以尝试通过以下方式解决它:

  • 清除automaticallyAdjustsScrollViewInsets
  • 从滚动视图中删除自动添加的contentInset
  • 设置控制器以执行a)即使使用不透明条形,也可以设置extendedLayoutIncludesOpaqueBars