Change color of UISwitch appwise

2020-06-08 23:41发布

I am using UISwitch in iOS 3 to make a switch element in my app. It has default color set to blue, but I want to change its color to brown.

How can I choose a different color for the UISwitch element in iOS 3?

How can I choose a different color for the UISwitch element in a modern iOS app (iOS 5+)?

6条回答
趁早两清
2楼-- · 2020-06-08 23:53

For a modern iOS XX version skip the answer as it has zero relevance lately. Still here? In iOS 3. You can't. But you know… people are landing here because of rank, and comments containing other versions and stuff so…

The fifth iOS release now allows a documented way of doing this: with the property onTintColor.

UISwitch *s = [[UISwitch alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
s.on = YES;
s.onTintColor = [UIColor redColor];
[self.view addSubview:s];
[s release];

produce this

It's a thing that was requested that looks a color

Edit: I have no idea why someone would come through and roll back the answer to limit it to the question only while not doing the same to all the answers.

Edit more: In iOS 3 you had to use some undocumented feature. There used to be a link about that here but it broke. And if you did that your app might get rejected because of changing the color.

It kind of starts with this, which should be enough for you to find it somewhere else:

UISwitch *aSwitch = [[UISwitch alloc] initWithFrame:someRectangle];
[aSwitch setAlternateColors:YES];
//Do something with aSwitch
[aSwitch release];

I can't recommend it. And that turns out unpopular.

查看更多
老娘就宠你
3楼-- · 2020-06-08 23:54

For a global change for all UISwitch elements in Swift 3, use the appearance proxy:

UISwitch.appearance().onTintColor = UIColor.brown

under the AppDelegate application:didFinishLaunchingWithOptions: method.

查看更多
放我归山
4楼-- · 2020-06-09 00:00

Finally, with iOS 5 you can change the color of the switch with the property onTintColor.

UISwitch *s = [[UISwitch alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
s.on = YES;
s.onTintColor = [UIColor redColor];
[self.view addSubview:s];
[s release];

produces this:

Enter image description here

查看更多
甜甜的少女心
5楼-- · 2020-06-09 00:00

For Swift 3:

var mySwitch : UISwitch = ...
mySwitch.onTintColor = UIColor.blue
查看更多
该账号已被封号
6楼-- · 2020-06-09 00:04

Take a look at the custom UISwitch control that I built to allow me to change the background color of the control. You could use the same method to change the text, the font, or the text color very easily.

http://www.homick.com/posts/custom-uiswitch-control

The code is available on GitHub and includes a PSD that is used to build three different PNG files that the control uses. You can modify the contents of the psd to recreate the PNG files in whatever format you like. Swap those into the control and away you go.

This gives a lot more options than just orange and blue.

查看更多
虎瘦雄心在
7楼-- · 2020-06-09 00:12

Currently you are limited to text values of On/Off or 0/1 for a UISwitch. You can customize the color by using tint. For further customization I would suggest something like what's been posted above going with a completely custom solution

ex. [mySwitch setOnTintColor:[UIColor colorWithRed:0 green:175.0/255.0 blue:176.0/255.0 alpha:1.0]];

source: http://www.raywenderlich.com/4344/user-interface-customization-in-ios-5

EDIT: For iOS3, you are limited to a custom implimentation, I would suggest swapping two buttons with custom images. In later iOS versions you are given much more control and built in customization options.

查看更多
登录 后发表回答