かなり長い間、私はUISearchBarの上にある有害な行を削除しようとしていませんでした。明るい背景では暗く、暗い背景では明るく見えます。
私はこの質問を見ましたが、それはセパレーターやプルトゥリフレッシュとは何の関係もありませんでした。やっと諦めて助けを求めることにしたとき、私はもう一度突っつい始めて、目がくらむほど単純な(おそらく完全に直感的ではないが)解決策を見つけたので、他の人が同じ問題に直面している場合に備えてそれを共有したいと思いました。検索バーを次のように構成します。
// I tried this drawing method
[self.searchBar setBackgroundImage:[[UIImage imageNamed:@"linen_bg_bar.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]];
// and this one.
[self.searchBar setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"linen_bg_bar.png"]]];
// Same problem either way.
[self.searchBar setPlaceholder:NSLocalizedString(@"Filter", @"placeholder text in the search bar")];
[self.searchBar setSearchFieldBackgroundImage:[[UIImage imageNamed:@"linen_textfield_search.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(16, 16, 16, 16)] forState:UIControlStateNormal];
[self.searchBar setImage:[UIImage imageNamed:@"linen_icon_search.png"] forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];
self.table.tableHeaderView = self.searchBar;
[self.table setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"linen_bg_dark.png"]]];
この投稿の提案に従って、私はその上に描画しようとしましたが、描画はまだ線の下にレンダリングされているようでした。
CGRect rect = self.searchBar.frame;
UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, rect.size.width, 2)];
lineView.backgroundColor = [UIColor redColor];
私の赤い「隠蔽」行の例を参照してください。