web-dev-qa-db-ja.com

iOS 8で検索バーの色を透明に変更できない

Xcode 5から6にアップグレードされ、検索バーの色が黒になりました。

ストーリーボードの右ペイン> [バーの色合い]で色を変更して色をクリアしようとしましたが、まだ黒のままです。

また、プログラムで試してみました:

[self.searchBar setTintColor:[UIColor clearColor]];

まだ黒い:(

何か案は?

28
ox_

UINavigationBarによく似た検索バーのtintColorプロパティは、ボタンの色を変更し、実際の検索バーの背景ではなく、点滅するカーソルの色を変更します。使用したいのはbarTintColorプロパティです。

searchbar.barTintColor = [UIColor orangeColor];
searchbar.tintColor = [UIColor greenColor];

次のい、しかし有益な結果を生成します。

enter image description here

完全に透明な検索バーを使用する場合は、背景画像も設定する必要があります。

searchbar.barTintColor = [UIColor clearColor];
searchbar.backgroundImage = [UIImage new];

enter image description here

EDIT:のサブビューを走査および変更しないことを強くお勧めします他の回答で提案されているように、anyUIKitオブジェクト。 Appleのドキュメントから:

UIKitおよび他のシステムフレームワークで宣言された複雑なビューの場合、通常、ビューのサブビューはプライベートと見なされ、いつでも変更される可能性があります。したがって、これらのタイプのシステム提供ビューのサブビューを取得または変更しようとしないでください。その場合、将来のシステム更新中にコードが破損する可能性があります。

https://developer.Apple.com/documentation/uikit/uiview/1622614-subviews

67
Mike

IOS 9でSwift 2.0この方法で変更しました:

    let image = UIImage()

    searchBar.setBackgroundImage(image, forBarPosition: .Any, barMetrics: .Default)
    searchBar.scopeBarBackgroundImage = image
7
darqueos

オンSwift 3:

SearchBarの背景を空の画像に設定する:

    searchBar.setBackgroundImage(image, for: .any, barMetrics: .default)
    searchBar.scopeBarBackgroundImage = image
2
Gilad Brunfman