如何将UISwitch默认颜色更改为closures状态?

我想改变UISwitch中offTintColor的颜色。 开关在tableview中,开关是编程的。

[settingsSwitch setBackgroundColor:[UIColor whiteColor]]; [settingsSwitch setTintColor:[UIColor whiteColor]]; [settingsSwitch setThumbTintColor:[UIColor redColor]]; [settingsSwitch setOnTintColor:[UIColor colorWithRed:138/256.0 green:9/256.0 blue:18/256.0 alpha:1]]; 

在这里输入图像说明

这是我设置背景颜色白色时的结果。

在这里输入图像说明

而没有背景,我得到了红色,这是我的细胞的颜色。

在这里输入图像说明

这是我想要的结果,当开关打开onTintColor应该暗红色,并在closures状态,它应该是白色的。

我试着用这行代码在开关上设置图像

 [settingsSwitch setOnImage:[UIImage imageNamed:@"on.png"]]; [settingsSwitch setOffImage:[UIImage imageNamed:@"off.png"]]; 

但它不改变图像。 我想改变开关在closures状态的颜色。 希望我已经清楚的解释了我的问题,感谢您的帮助。

您可以使用以下代码来满足要求。

你的ViewDidLoad

 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self.view setBackgroundColor:[UIColor redColor]]; settingsSwitch.layer.cornerRadius = 16.0; // you must import QuartzCore to do this if (settingsSwitch.on) { NSLog(@"If body "); [settingsSwitch setThumbTintColor:[UIColor redColor]]; [settingsSwitch setBackgroundColor:[UIColor whiteColor]]; [settingsSwitch setOnTintColor:[UIColor whiteColor]]; }else{ NSLog(@"Else body "); [settingsSwitch setTintColor:[UIColor clearColor]]; [settingsSwitch setThumbTintColor:[UIColor redColor]]; [settingsSwitch setBackgroundColor:[UIColor colorWithRed:138/256.0 green:9/256.0 blue:18/256.0 alpha:1]]; } } 

调用状态变化IBAction的方法。

 - (IBAction)switchStatusChange:(UISwitch *)sender { if (sender.on) { NSLog(@"If body "); [sender setThumbTintColor:[UIColor redColor]]; [sender setBackgroundColor:[UIColor whiteColor]]; [sender setOnTintColor:[UIColor whiteColor]]; }else{ NSLog(@"Else body "); [sender setTintColor:[UIColor clearColor]]; [sender setThumbTintColor:[UIColor redColor]]; [sender setBackgroundColor:[UIColor colorWithRed:138/256.0 green:9/256.0 blue:18/256.0 alpha:1]]; } } 

您可以先使用您的方法+添加边框半径来移除不需要的angular落:

 slider.backgroundColor = [UIColor whiteColor]; slider.layer.cornerRadius = 18.0; 

本来是从这个答案。

在UISwitch切angular视图,而不是看到圆angular,最好的答案是在这里https://stackoverflow.com/a/38564168/6609238