5

私はこのようなものを手に入れたいです:

ここに画像の説明を入力してください

しかし、元の背景を削除できませんでした(iOS5を使用しています)。しかし、Appleはそれをしたようです:

ここに画像の説明を入力してください

どうすれば欲しいものを作成できますか?または、選択の余地はなく、私が持っている唯一の選択肢はUITextFieldをカスタマイズすることですか?

提案やアイデアをありがとう!

編集:最初の返信の後、これは私が得たものです:

ここに画像の説明を入力してください

すべてのコンポーネントを半透明にしてアルファ値を変更せずに、白い内側の背景を削除するにはどうすればよいですか?ところで、白い色を黒い色に変えることはできますか?

4

3 に答える 3

7

このコードを試してください、それは私のために働いた

for (id img in yourSearchBar.subviews) {
        if ([img isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
           [img removeFromSuperview];    
        }
    }

上記のコードで yourSearchBar は背景を削除したい検索バーです. for ループは UISearchBar の背景画像を検索しています.

于 2012-06-07T19:51:48.803 に答える
6

実際には、appearance プロトコルを使用する必要があります。UISearchBar の単一のインスタンスに対して変更することができます。

UIImage *searchBg = [UIImage imageNamed:@"search_bar.png"];
[searchBar setBackgroundImage:searchBg];

または、異なるシーンに複数の検索バーがある場合、これはすべてのインスタンスをテーマにします (ただし、AppDelegate のような賢明な場所で呼び出して、バーが表示される前にすべて正しく設定されていることを確認してください)。

UIImage *searchBg = [UIImage imageNamed:@"search_bar.png"];
[[UISearchBar appearance] setBackgroundImage:searchBg];

更新: OK、検索バーの背景を変更するには、次のいずれかを使用する必要があります。

searchBar の単一インスタンス:

[searchBar setSearchFieldBackgroundImage:searchBg forState:UIControlStateNormal];

UISearchBars のすべてのインスタンス:

[[UISearchBar appearance] setSearchFieldBackgroundImage:searchBg forState:UIControlStateNormal];

お役に立てれば。

于 2012-06-08T00:16:21.700 に答える