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

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

enter image description here

заранее спасибо за любую помощь

4 ответов


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

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

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

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

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

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


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

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

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

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

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


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

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

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


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

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

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