私は現在、ios7が登場するまで正常に機能するアプリに取り組んでいます。検索バーは以前は透明で、ナビゲーションバーの青い背景に溶け込んでいました。 ios7で作業しているので、ナビゲーションバーは青色ですが、検索バーの背景は灰色です。青または透明にするにはどうすればよいですか?
これが画像です:
これを試して:
if(IOS_7)
{
self.searchBar.searchBarStyle = UISearchBarStyleMinimal;
}
Interface Builder(.xib)で「バーの色合い」を「クリアカラー」に設定できます。
コードで実行することもできます。
self.searchBar.barTintColor = [UIColor clearColor];
単色にするには、UISearchBarBackgroundビューを削除するだけです。
検索バーを適切にクリーンアップするための再帰的なメソッドを作成しました。
- (void) removeUISearchBarBackgroundInViewHierarchy:(UIView *)view
{
for (UIView *subview in [view subviews]) {
if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
[subview removeFromSuperview];
break; //To avoid an extra loop as there is only one UISearchBarBackground
} else {
[self removeUISearchBarBackgroundInViewHierarchy:subview];
}
}
}
検索バーをメソッドに送信し、後で色を変更するだけです。
[self removeUISearchBarBackgroundInViewHierarchy:self.searchDisplayController.searchBar];
self.searchDisplayController.searchBar.backgroundColor = yourUIColor;
Swift 4.2
この拡張機能を使用して、SearchBarのフォントと背景色を変更できます。
extension UISearchBar {
var textField: UITextField? {
let subViews = subviews.flatMap { $0.subviews }
guard let tf = (subViews.filter { $0 is UITextField }).first as? UITextField else { return nil }
return tf
}
func setTextColor(color: UIColor) {
textField?.textColor = color
}
func setBackgroundColor(color: UIColor) {
textField?.backgroundColor = color
}
}