我可以通过 UISearchController 以编程方式复制 UIStatusBar 上的点击吗?
Can I replicate programmatically what a tap on the UIStatusBar does w/ UISearchController?
我找不到像 UINavigationItem
包含 UISearchController
时 UIStatusBar
那样将 UIScrollView
滚动到顶部的方法。在这种情况下,滚动视图滚动到顶部 包括 显示搜索栏。如果我尝试对通常的嫌疑人(调用滚动、设置内容偏移量等)执行此操作,我似乎无法使搜索栏出现。
我能否以编程方式复制点击 UIStatusBar
的功能?
在我看来,我认为Apple在这里使用private 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。
我找不到像 UINavigationItem
包含 UISearchController
时 UIStatusBar
那样将 UIScrollView
滚动到顶部的方法。在这种情况下,滚动视图滚动到顶部 包括 显示搜索栏。如果我尝试对通常的嫌疑人(调用滚动、设置内容偏移量等)执行此操作,我似乎无法使搜索栏出现。
我能否以编程方式复制点击 UIStatusBar
的功能?
在我看来,我认为Apple在这里使用private 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。