Подтвердить что ты не робот

Как сделать UISwitch в iOS 7 не занять фоновый цвет представления позади него?

Похоже на это:

enter image description here

В то время как я предпочел бы более серый фон. Я действительно должен использовать UIImageView?

4b9b3361

Ответ 1

Вот как я изменил цвет заливки моего 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 с обычным цветом (фоновым).

Надеюсь, это поможет кому-то:)

Ответ 2

Вы можете установить свойство setOnTintColor вашего UISwitch на желаемый цвет.

Ответ 3

Вы также можете установить это для коммутатора в Interface Builder. Просто установите цвет фона UISwitch на любой цвет, который вы хотите (белый, в примере ниже), затем установите атрибут Runtime User Defined Runtime layer.cornerRadius = 16:

enter image description here

Ответ 4

Нет поддержки API для изменения цвета заливки UISwitch.

Настройка tintColor повлияет только на контур, а настройка backgroundColor повлияет на весь кадр, включая части за пределами округленных границ.

Вам либо нужно поместить непрозрачную UIView в надлежащей форме, либо - проще - использовать пользовательскую реализацию с открытым исходным кодом, например MBSwitch, который позволяет вам установить цвет заливки.

Ответ 5

Вы также можете использовать изображение в качестве фона, используя [UIColor colorWithPatternImage];

mySwitch.onTintColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"toggle-bg-on"]];
mySwitch.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"toggle-bg-off"]];

Ответ 6

Добавление к решению 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];