web-dev-qa-db-ja.com

iOS 7でUISwitchを作成して、背後のビューの背景色を取得しないようにするにはどうすればよいですか?

オフのときはいつでも次のようになります。

enter image description here

私はもっ​​と灰色の背景が好きですが。本当にUIImageViewを使用する必要がありますか?

22
Doug Smith

IOS7UISwitchの塗りつぶしの色を変更した方法は次のとおりです。

まず、QuartzCoreをインポートする必要があります。

#import <QuartzCore/QuartzCore.h>

次に、背景色を設定し、UISwitchの角を丸めます。

UISwitch *mySwitch = [[UISwitch alloc] initWithFrame:CGRectMake(0.0, 0.0, 51.0, 31.0)];
mySwitch.backgroundColor = [UIColor redColor];
mySwitch.layer.cornerRadius = 16.0; // you must import QuartzCore to do this.
[self addSubview:mySwitch];

これにより、カスタムのオフ(背景)色のUISwitchが提供されます。

これが誰かに役立つことを願っています:)

53
Barry Wyckoff

setOnTintColorUISwitchプロパティを希望の色に設定できます。

17
Antonio R.

InterfaceBuilderのスイッチにこれを設定することもできます。 UISwitchの背景色を任意の色(以下の例では白)に設定してから、ユーザー定義のランタイム属性layer.cornerRadius = 16を設定します。

enter image description here

5

UISwitchの塗りつぶしの色を変更するためのAPIサポートはありません。

tintColorを調整すると、アウトラインにのみ影響し、backgroundColorを調整すると、丸みを帯びた境界の外側の部分を含むフレーム全体に影響します。

適切な形状の不透明なUIViewを背後に配置するか、 MBSwitch などのカスタムオープンソース実装を使用する必要があります。これにより、塗りつぶしの色を設定できます。

4

[UIColor colorWithPatternImage]を使用して、画像を背景として使用することもできます。

mySwitch.onTintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"toggle-bg-on"]];
mySwitch.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"toggle-bg-off"]];
3
Paul van Dijk

Barry Wyckoffソリューションへの追加:色合いの色も設定

UISwitch *mySwitch = [[UISwitch alloc] initWithFrame:CGRectMake(0.0, 0.0, 51.0, 31.0)];
mySwitch.backgroundColor = [UIColor redColor];
mySwitch.layer.cornerRadius = 16.0; // you must import QuartzCore to do this.
mySwitch.tintColor = [UIColor redColor];
[self addSubview:mySwitch];
1