我有一个UITableView
其中有一个UISearchBar
子视图。这一切都在一个人的观点上UIViewController
以及一些其他子视图(标签、文本字段等)。
表格的搜索栏和内容偏移量的行为非常奇怪,但它似乎取决于这些视图添加到 xib 中主视图的顺序。我创建了一个示例项目,仅使用我的表格/搜索和标签来进行测试,结果是相同的。添加表时after标签,一切正常:
Setup:
正确且预期的结果:
However,如果我只是更改我的 2 个子视图位于主视图上的顺序(又名添加表before标签)然后奇怪的事情开始发生。
显然设置不好:
搜索栏的奇怪偏移:
我没有更改任何其他内容,那么为什么 Xcode 似乎关心这些子视图添加到主视图的顺序?如果我在“坏”表格设置上向上滚动,搜索栏会立即在其顶部边缘消失,但表格的内容将继续向上滚动,直到到达 xib 中设置的框架顶部。向下滚动,搜索栏不会重新出现,直到奇怪的降低位置。这是 Xcode 5.1.1 中的内容,而不是新的测试版。无论是否打开自动布局,结果都是相同的。
知道为什么会发生这种情况吗?这是一个错误,还是我错过了什么? (我没有发布任何代码,因为我所做的只是设置部分、行数和设置单元格上的文本。不要弄乱内容插入、偏移量等任何内容。我从应用程序委托加载视图为导航控制器的根)
发生这种情况是因为UIViewController
的属性称为automaticallyAdjustsScrollViewInsets
在 iOS 7 中,UIViewControllers 有一个名为
自动调整ScrollViewInsets,默认为YES。如果你
有一个滚动视图,它是视图的根视图
控制器(例如 UITableViewController)或子视图
索引 0,那么该属性将同时调整 contentInset 和
滚动指示器插入。这将允许您的滚动视图开始其
导航栏下方的内容和滚动指示器(如果您的视图
控制器位于导航控制器中)。
From 大书呆子牧场
如果您使用故事板,则可以通过选择视图控制器并在属性检查器中取消选择来更改它Adjust scroll view insets
.
这是它的描述苹果文档:
默认值为 YES,允许视图控制器调整其
滚动视图插入以响应所消耗的屏幕区域
状态栏、导航栏、工具栏或选项卡栏。如果您设置为“否”
想要自己管理滚动视图插入调整,例如何时
视图层次结构中有多个滚动视图。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)