如何在iOS 7下制作UISwitch而不采用背后视图的背景颜色?

时间:2013-10-04 18:00:41

标签: ios objective-c uiview ios7 uiswitch

每当关闭时看起来像这样:

enter image description here

虽然我更喜欢灰色背景。我真的必须使用UIImageView吗?

6 个答案:

答案 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

enter image description here

答案 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];