我的应用程序的第一个屏幕是UITableViewController没有导航栏,这意味着内容在状态栏下流动,因此存在大量文本冲突.我已经调整了两个属性Under top bars,Adjust scroll view insets哪些实际上阻止了它滚动,但代价是保持表视图的顶部.我试图将UITableView帧设置为偏移20像素,但它似乎没有生效,因为我目前需要该应用程序与iOS 6兼容我无法跳转到iOS 7 Storyboards强制自动布局使用顶部高度指南.有没有人找到适用于这两个版本的解决方案?
事情我已经尝试:设置edgesForExtendedLayout,故事情节中更改设置Under top bars和Adjust scroll view,迫使帧到一个新的领域.
一张图片胜过千言万语:

我正在使用UISearchController在tableview的标题视图中显示一个搜索栏:
...
self.searchController.hidesNavigationBarDuringPresentation = NO;
self.presentingTVC.tableView.tableHeaderView = self.searchController.searchBar;
[self.searchController.searchBar sizeToFit];
self.presentingTVC.tableView.tableHeaderView = self.searchController.searchBar;
Run Code Online (Sandbox Code Playgroud)
(需要设置tableHeaderView属性两次,否则标题视图与第一行重叠,参见SO上的几个答案)
这是它看起来的样子,在不活动时完美地处于适当位置

搜索栏应该在活动时保持原位 - 我不希望它向上移动以隐藏导航栏.但它意外地动画下来,在它和导航栏之间留下一个空白:

这是一个 奇怪的搜索栏动画视频
如果我只是使用与UISearchController分开的搜索栏,则它在激活时不会显示相同的行为.
在我的呈现视图控制器中,我有self.definesPresentationContext = YES;和self.navigationController.navigationBar.translucent = YES;,并且在IB中没有任何"扩展边缘"框是活动的(所有这些似乎都可能使搜索演示文件无法读取).
有谁知道如何阻止搜索栏动画下来?
我设置了这样一个UISearchController:
searchResultsController = SearchResultsController()
searchController = UISearchController(searchResultsController: searchResultsController)
searchController.searchResultsUpdater = self
searchController.hidesNavigationBarDuringPresentation = false
searchController.dimsBackgroundDuringPresentation = true
searchController.searchBar.searchBarStyle = .minimal
searchController.delegate = self
definesPresentationContext = true
navigationItem.titleView = searchController.searchBar
Run Code Online (Sandbox Code Playgroud)
SearchResultsController只是一个UITableView用于显示搜索结果的视图控制器.
当设备处于纵向状态时,开始在纵向模式下搜索,表视图顶部有一个额外的空间(RESULT标题是表视图的开头)
然后,如果我旋转到横向模式,空间消失:
当设备处于横向模式并且我开始搜索时,表格视图被切断:
然后如果我旋转到肖像,表视图完全适合:
额外的空间高度与状态栏高度完全相同.所以我想知道这里有一些与状态栏有关的东西.
如果我将搜索栏指定为表视图,则不会发生这种情况tableHeaderView.只有当搜索栏在导航标题中时才会发生.谁知道为什么?