我的视图中有一个UISearchBar包含在最顶层单元格上方的UITableView中。一切正常,直到我将一个新的视图控制器推到导航堆栈上。一旦我弹出新VC并返回到原始视图控制器,搜索栏就不会显示在表的顶部。相反,我的导航栏和表格视图的顶行之间有一个空白区域。但是,如果我点击这个空白区域,那么搜索栏会像正常一样打开,当我再次点击取消时,一切都很顺利。
我认为UISearchBar的视图设置为完全白色,但我不明白为什么。我最初将UISearchBar添加到故事板中,作为UISearchDisplayController的一部分。将VC从其他控制器展开后,如何将搜索栏变为白色,而不是将其推入导航堆栈?
答案 0 :(得分:1)
我有同样的问题。我不认为它与搜索栏的颜色有关,而是与搜索栏的子视图的布局有关。经过多次试验和错误后,我想出了这个解决方案:
@interface MySearchBar : UISearchBar
@end
@implementation MySearchBar
-(void) layoutSubviews
{
[super layoutSubviews];
if (self.subviews.count == 1)
{
UIView *subview = [self.subviews objectAtIndex:0];
subview.frame = self.bounds;
}
}
@end
使用MySearchBar而不是UISearchBar