每当关闭时看起来像这样:
虽然我更喜欢灰色背景。我真的必须使用UIImageView吗?
答案 0 :(得分:53)
以下是我改变iOS7 UISwitch填充色的方法。
首先,您需要导入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。
希望这有助于某人:)
答案 1 :(得分:17)
您可以将setOnTintColor
的{{1}}属性设置为您想要的颜色。
答案 2 :(得分:5)
您也可以在Interface Builder中为交换机设置此项。只需将UISwitch
的背景颜色设置为您想要的任何颜色(白色,在下面的示例中),然后将用户定义的运行时属性设置为layer.cornerRadius = 16
:
答案 3 :(得分:4)
没有API支持更改UISwitch
的填充颜色。
调整tintColor
只会影响轮廓,调整backgroundColor
会影响整个帧,包括圆角边界以外的部分。
您必须在其后面放置一个形状正确的不透明UIView
或者 - 更容易 - 使用自定义开源实现,例如MBSwitch,它允许您设置关闭填充颜色。
答案 4 :(得分:3)
您还可以使用[UIColor colorWithPatternImage]将图像用作背景;
mySwitch.onTintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"toggle-bg-on"]];
mySwitch.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"toggle-bg-off"]];
答案 5 :(得分:1)
添加到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];