Пользовательский UISwitch с изображением [закрыт]

17

Мне нужно реализовать пользовательский переключатель в проекте. В настоящее время я обнаружил, что мы не можем изменять с помощью UISwitch, чтобы реализовать, как показано на рисунке ниже. Я следил за сообщениями и просматривал через stackoverflow и другие блоги, но не нашел решение по своему усмотрению. Один из способов - перейти с контролем UISegmented, как в этой публикации, но это тоже не решает мою проблему.

Заранее благодарим за помощь

    
задан Arshad Parwez 29.04.2013 в 16:51
источник

4 ответа

21

Чем тяжело создавать собственный переключатель? UISwitch - это элемент управления, по существу, просто представление, которое отправляет сообщение - с двумя состояниями. Вы можете настроить его следующим образом:

  • Вид контейнера: простой вид с закругленными углами (установите cornerRadius слоя представления) и цвет фона

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

  • правое изображение: изображение, которое отображает изображение, которое вы хотите показать с правой стороны, т. е. метка X для вашего примера

  • слайдер: изображение, показывающее слайдерную часть переключателя, установленную над двумя другими видами изображения

Когда пользователь набирает или управляет элементом управления, используйте Core Animation, чтобы переместить ползунок на другую сторону коммутатора и обновить состояние элемента управления и быстро перейти к цвету фона для нового состояния. Отправьте действие элемента управления цели.

    
ответ дан Caleb 29.04.2013 в 17:02
источник
18

Как говорится в газете, вы также можете сделать это с помощью UIButton, просто установите изображения:

[button setImage:[UIImage imageNamed:@"image_on"] forState:UIControlStateSelected];
[button setImage:[UIImage imageNamed:@"image_off"] forState:UIControlStateNormal];

, и когда он постучал, просто переключите выбранное свойство.

- (void) buttonTap {
    button.selected = !button.selected;
}

Это автоматически изменит изображения.

    
ответ дан Odrakir 29.04.2013 в 16:59
источник
1

Похоже, вы просто хотите, чтобы ваш элемент управления имел только 2 состояния - включен и отключен.

Простым способом для этого было бы создать 2 png-изображения и использовать пользовательский UIButton с фоновым изображением и просто заменить эти 2 изображения каждый раз, когда кнопка будет нажата.

Это то, что вы пытаетесь сделать или я чего-то не понял?

    
ответ дан gasparuff 29.04.2013 в 16:55
источник
1

Вы знаете о -[UISwitch setOnImage:] и -[UISwitch setOffImage:] , правильно? Также -[UISwitch setTintColor] . Единственный недостаток, который я вижу, заключается в том, что сам коммутатор будет стандартным переключателем iOS (круглая кнопка), но в противном случае это было бы самым iOS-подобным решением.

При реализации собственного / offImage помните о ограничениях размера, а также о том, что сторона изображения к переключателю является вогнутой. tintColor можно использовать, чтобы остальные переключатели отображали вашу цветовую схему. Вы можете отслеживать событие valueChanged , чтобы изменить цвет оттенков.

Если вам нужен точный вид, который вы видите в своем вопросе (кнопка с квадратным переключателем), тогда вы, вероятно, захотите использовать настраиваемый элемент управления, как предположил @Caleb.

    
ответ дан Olie 27.06.2013 в 19:39
источник