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

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

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

enter image description here

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

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

Ответ 4

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

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

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