UISearchController搜索栏的位置下落64点
好吧,我已经花了8个小时以上在这个没有运气。UISearchController搜索栏的位置下落64点
搜索栏出现正好64点太低:
所有其它帧是完全正确的。
编辑: - 这是UISearchController
的看法,得到错误origin.y
。它被设置为64,当它应该是0 如果我加入这个方法:
- (void)didPresentSearchController:(UISearchController *)searchController
{
[super didPresentSearchController:searchController];
searchController.view.frame = CGRectMake(0, 0, searchController.view.frame.size.width, searchController.view.frame.size.height);
}
随后的意见一致。然而,它跳跃,因为它跳跃。如果我修改willPresentSearchController
中的框架,它不起作用,因为控制器必须在提交后进行某种布局。
如果我使用SparkInspector,并从原点64(它被设置为0)编辑UISearchBarContainerView
的帧,问题就解决了。
这里是我的相关配置:
我不使用Interface Builder,一切都在代码中配置。 我敢肯定,设置definesPresentationContext
是正确的。
的VC坐落在一个常规UINavigationController
,这是一个SplitViewController内(但在iPhone上存在以及问题)。
任何想法?我觉得我缺少关于一个简单的配置选项的UINavigationBar
我也有一个使用自定义容器视图控制器模式,这是比较复杂的,并且一个作品不同的控制器。
当我设置
self.definesPresentationContext = NO;
所以现在UISearchBar
被正确定位,但表示上下文是错误的,引起了UISearchController
的表视图占据全视角。
好了,我已经找到了解决办法(https://stackoverflow.com/a/30010473/579217)
该做的伎俩:
- (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar
{
if (bar == self.searchController.searchBar) {
return UIBarPositionTopAttached;
}
else { // Handle other cases
return UIBarPositionAny;
}
}
如果您的tableView是自定义的UITableView,而不是一个UITableViewController你应该隐藏的顶部tableview下的导航栏,因为搜索栏自动附加在表视图的标题,如果你的表视图开始下导航栏我导致这个问题。只需从导航栏顶部将表格视图全屏。
谢谢你给我解决你的问题。 它帮助。自。definesPresentationContext = NO; – Coder