2017-07-30 14 views
1

私はこれを動作させるためにあらゆる方法を試しました。私はカスタムクラスをセットアップしました。UISearchBarはUISearchBarBackgroundを削除しないでください

override func layoutSubviews() { 
    super.layoutSubviews() 
    clearBackgroundColor() // function in the question 

} 

private func clearBackgroundColor() { 
    guard let UISearchBarBackground: AnyClass = NSClassFromString("UISearchBarBackground") else { return } 

    for view in self.subviews { 
     for subview in view.subviews { 
      if subview.isKind(of: UISearchBarBackground) { 
       subview.alpha = 0 
      } 
     } 
    } 
} 

backgroundColor、barTintColorを.clearに設定しました。スタイルは最小限に抑えます。気がおかしくなりそうだ。私は、検索バーの背景を見つけるためにブレークポイントを設定します。 Iveはsubview.removeFromSuperview()も試しました。何もない。私はImが狂っていると思う。何か不足していますか?

これはiOS 10でストーリーボードを使用しています。どんな助けでも大歓迎です。

答えて

2

私はずっと前にクライアントのアプリケーションでこれをしなければなりませんでした。ここでは私のために働いていたものです:

私はUISearchBarサブクラスを持っていた:

@property (nonatomic, strong) UITextField* textField; 

私はinitから次と呼ばれる:

self.textField     = [self findViewOfClass:[UITextField class] inView:self]; 

    self.translucent    = NO; 
    self.barTintColor    = ...; 
    self.textField.backgroundColor = ...; 

- (id)findViewOfClass:(Class)class inView:(UIView*)view 
{ 
    if ([view isKindOfClass:class]) 
    { 
     return view; 
    } 
    else 
    { 
     for (UIView* subview in view.subviews) 
     { 
      id foundView = [self findViewOfClass:class inView:subview]; 

      if (foundView != nil) 
      { 
       return foundView; 
      } 
     } 
    } 

    return nil; 
} 

不可欠な部分はUITextFieldを見つけることです。 (私はキャンセルボタンをカスタムスタイルにするために同様のことをしました)translucentを無効にすることが本当に必要だったことをぼんやりと覚えています。試してみるのは簡単です。

これはそうです。これがあなたのために働くかどうか私に教えてください。

私はObj-Cコードしか持っていませんが、これは変換が簡単です。

+0

これは実際にはかなり近いです。しかし、答えは少し簡単にすることができます。投稿する –

0

私は最後に、この件に関するすべての投稿から以前の回答を無視し、独自のデバッグビュー階層を作成しました。私は、 "_UISearchBarSearchFieldBackgroundView"と呼ばれるバックグラウンドとして機能するImageViewを発見しました。これにより、少なくともiOS 9以降で問題を解決する機能を見つけることができました。

searchBar.setSearchFieldBackgroundImage(UIImage(), for: .normal) 

これは、この問題を解決する唯一の方法ではないことに注意してください。しかし、ループを必要とせず、イメージが空であるため追加のビューは決して追加されないため、他のメソッドと同じ結果が得られます。

これはiOS 9以降でのみ有効です。だから、あなたの人件費は変わるかもしれません。私はiOS 10でデプロイメントターゲット9.3をテストしました。

関連する問題