オフのときはいつでも次のようになります。
私はもっと灰色の背景が好きですが。本当にUIImageViewを使用する必要がありますか?
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が提供されます。
これが誰かに役立つことを願っています:)
setOnTintColor
のUISwitch
プロパティを希望の色に設定できます。
InterfaceBuilderのスイッチにこれを設定することもできます。 UISwitch
の背景色を任意の色(以下の例では白)に設定してから、ユーザー定義のランタイム属性layer.cornerRadius = 16
を設定します。
UISwitch
の塗りつぶしの色を変更するためのAPIサポートはありません。
tintColor
を調整すると、アウトラインにのみ影響し、backgroundColor
を調整すると、丸みを帯びた境界の外側の部分を含むフレーム全体に影響します。
適切な形状の不透明なUIView
を背後に配置するか、 MBSwitch などのカスタムオープンソース実装を使用する必要があります。これにより、塗りつぶしの色を設定できます。
[UIColor colorWithPatternImage]を使用して、画像を背景として使用することもできます。
mySwitch.onTintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"toggle-bg-on"]];
mySwitch.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"toggle-bg-off"]];
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];