我无法找到一种方法将UIScrollView
滚动到顶部的方式与UIStatusBar
包含UINavigationItem
时的UISearchController
相同。在这种情况下,滚动视图滚动到顶部,包括显示搜索栏的。如果我尝试与通常的嫌疑人(调用滚动,设置内容偏移等)这样做,我似乎无法显示搜索栏。
我可以通过编程方式复制点击UIStatusBar
的内容吗?
答案 0 :(得分:1)
在我看来,我认为Apple在这里使用私有API来实现它。但是如果你想复制一些看起来像它的东西,那就让搜索栏出现。您可以按照以下步骤操作:
将UIScrollView
滚动到顶部
self.scrollView.contentOffset = CGPointZero;
之后,显示搜索栏和大标题
// Show large title
self.navigationItem.hidesSearchBarWhenScrolling = NO;
// Show search bar
self.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeAlways;
当显示搜索栏和大标题时,重置navigationItem
属性以提供scrollView
正常行为
self.navigationItem.hidesSearchBarWhenScrolling = YES;
self.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeAutomatic;
结果:
工作代码:
[UIView animateWithDuration:0.25f animations:^{
self.scrollView.contentOffset = CGPointZero;
} completion:^(BOOL finished) {
[UIView animateWithDuration:0.25f animations:^{
self.navigationItem.hidesSearchBarWhenScrolling = NO;
self.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeAlways;
} completion:^(BOOL finished) {
self.navigationItem.hidesSearchBarWhenScrolling = YES;
self.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeAutomatic;
}];
}];
有关详细信息,请查看my demo repo。