如何在激活UISearchBar时删除在源表视图上设置动画的透明黑色叠加层?
你能以某种方式得到负责的UIView并将其alpha设置为0吗?
或者有没有办法在黑色叠加层上显示空的searchResultsTableView?
答案 0 :(得分:6)
po [self.view subviews]
(id) $1 = 0x0a3155f0 <__NSArrayM 0xa3155f0>(
<ATShadowTableView: 0xc341600; baseClass = UITableView; frame = (0 44; 320 411); clipsToBounds = YES; gestureRecognizers = <NSArray: 0xa627200>; layer = <CALayer: 0xa626d30>; contentOffset: {0, 0}>,
<UISearchBar: 0xa618f40; frame = (0 0; 320 44); text = ''; layer = <CALayer: 0xa619040>>,
<UIControl: 0xa329fc0; frame = (0 44; 320 455); alpha = 0.8; opaque = NO; animations = { opacity=<CABasicAnimation: 0xa32b4e0>; }; layer = <CALayer: 0xa32a060>>
)
self.subview中的最后一个对象(UIControl
)是我们要删除的内容。所以
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller
{
...
[self performSelector:@selector(removeOverlay) withObject:nil afterDelay:.01f];
}
- (void)removeOverlay
{
[[self.view.subviews lastObject] removeFromSuperview];
}
答案 1 :(得分:0)
即使搜索中没有任何结果,也始终显示一些单元格。您可以通过常用的UITableViewDelegate / UITableViewDataSource方法完成此操作。请注意,因为您现在正在处理原始表视图,搜索表视图以及包含虚拟单元格的搜索表视图,并且所有UITableViewDelegate / UITableViewDataSource方法都需要注意这一点。