Измените цвет UISwitch appwise

Я использую UISwitch в iOS 3, чтобы сделать элемент переключателя в моем приложении. У него по умолчанию установлен синий цвет, но я хочу изменить его цвет на коричневый.

Как выбрать другой цвет для элемента UISwitch в iOS 3?

Как выбрать другой цвет для элемента UISwitch в современном приложении для iOS (iOS 5+)?

Ответы

Ответ 1

Для современной версии iOS XX пропустите ответ, поскольку в последнее время он не имеет значения. Все еще здесь? В iOS 3. Вы не можете. Но вы знаете... люди приземляются здесь из-за ранга и комментариев, содержащих другие версии и прочее, так что...

Пятый выпуск iOS теперь позволяет документированным способом сделать это: с помощью свойства onTintColor.

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

произвести это

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

Редактировать: я понятия не имею, почему кто-то пришел и откатил ответ, чтобы ограничить его только вопросом, не делая то же самое для всех ответов.

Редактировать больше: в iOS 3 вы должны были использовать некоторые недокументированные функции. Там раньше связь о том, что здесь, но она сломалась. И если вы это сделаете, ваше приложение может быть отклонено из-за изменения цвета.

Это как бы начинается с этого, и этого должно быть достаточно, чтобы найти его где-то еще:

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

Я не могу рекомендовать это. И это оказывается непопулярным.

Ответ 2

Наконец, в iOS 5 вы можете изменить цвет переключателя с помощью свойства onTintColor.

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

производит это:

Enter image description here

Ответ 3

Для глобального изменения для всех элементов UISwitch в Swift 3 используйте прокси-сервер вида:

UISwitch.appearance().onTintColor = UIColor.brown

в соответствии с методом AppDelegate application:didFinishLaunchingWithOptions:.

Ответ 4

В настоящее время вы ограничены текстовыми значениями On/Off или 0/1 для UISwitch. Вы можете настроить цвет, используя оттенок. Для дальнейшей настройки я бы предложил что-то вроде того, что было опубликовано выше, с полностью настраиваемым решением

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

источник: http://www.raywenderlich.com/4344/user-interface-customization-in-ios-5

EDIT: для iOS3 вы ограничены пользовательской импликации, я бы предложил обмен двумя кнопками с пользовательскими изображениями. В более поздних версиях iOS вам предоставляется гораздо больше возможностей управления и встроенных параметров настройки.

Ответ 5

Взгляните на пользовательский элемент управления UISwitch, который я создал, чтобы позволить мне изменить цвет фона элемента управления. Вы можете использовать тот же метод, чтобы очень легко изменить текст, шрифт или цвет текста.

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

Код доступен на GitHub и включает PSD, который используется для создания трех разных файлов PNG, которые использует элемент управления. Вы можете изменить содержимое psd для воссоздания файлов PNG в любом формате, который вам нравится. Поменяйте их в управление, и вы уходите.

Это дает гораздо больше возможностей, чем просто оранжевый и синий.

Ответ 6

Для Swift 3:

var mySwitch : UISwitch = ...
mySwitch.onTintColor = UIColor.blue