Как сделать UISwitch в iOS 7 не занять фоновый цвет представления позади него?
Похоже на это:
![enter image description here]()
В то время как я предпочел бы более серый фон. Я действительно должен использовать UIImageView?
Ответы
Ответ 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];