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

Как сделать UISlider "дорожкой" невидимым?

Я пытаюсь подражать функции Apple "Slide to Unlock" в моем приложении. Я добираюсь до этой точки (изображение ниже), но, как вы видите, "дорожка" UISlider видна и скрывает мой текст. Есть ли способ программно изменить атрибут, который сделает невидимым "дорожку"?

alt text

Пожалуйста, дайте мне знать, если вам нужен какой-либо из моего кода.

Спасибо заранее!

EDIT: если я изменил ползунок альфа на 0, он избавится от моей скользящей кнопки, так что это не сработает, если я не ошибаюсь.:)

4b9b3361

Ответ 1

Собственно, я только что понял это. Вот что я сделал:

UIImage *sliderMinimum = [[UIImage imageNamed:@"clearTrack.png"] stretchableImageWithLeftCapWidth:4 topCapHeight:0];
[slider setMinimumTrackImage:sliderMinimum forState:UIControlStateNormal];
UIImage *sliderMaximum = [[UIImage imageNamed:@"clearTrack.png"] stretchableImageWithLeftCapWidth:4 topCapHeight:0];
[slider setMaximumTrackImage:sliderMaximum forState:UIControlStateNormal];

clearTrack.png - это просто четкое изображение слайдера, которое я сделал.

Теперь у меня есть это: yay! alt text

Ответ 2

здесь еще проще. Нет необходимости создавать изображения, просто создайте пустой класс UIImage: P

UIImage *clearImage = [[UIImage alloc] init];
[self.slider setMinimumTrackImage:clearImage forState:UIControlStateNormal];
[self.slider setMaximumTrackImage:clearImage forState:UIControlStateNormal];

Ответ 3

Вероятно, нет способа скрыть дорожку; "слайд для разблокировки" не ведет себя как UISlider и, вероятно, является настраиваемым элементом управления. Возможно, вы сможете взломать элемент управления ползунком, возможно, установив непрозрачность (0 сделает его скрытым, и он не получит касаний), но если вы поедете по этому маршруту, у вас, вероятно, что-то сломается после обновления ОС. Apple не откатывается назад для совместимости, как это делает Microsoft.

Правильный способ сделать это с помощью настраиваемого элемента управления. Это может показаться больше работы, чем использование UISlider, но это не так, если вы сравните его со всем, что вы потратили и/или потратите на взлом UISlider.

Для этого: подкласс UIControl. Напишите свой собственный код чертежа, чтобы он выглядел правильно (вы, вероятно, можете повторно использовать часть того, что вы сейчас делаете). Затем зарегистрируйтесь для событий касания, чтобы переместить ползунок:

  • UIControlEventTouchDown: если он на дескрипторе, установите флаг "moving"
  • UIControlEventTouchDragInside: если установлен флаг перемещения, переместите ручку в положение касания; вы можете просто обновить переменную экземпляра, вызвать setNeedsDisplay, чтобы нарисовать ее в новой позиции.
  • UIControlEventTouchUpInside: если установлен флаг перемещения, и дескриптор завершен, разблокировка

Если вы хотите имитировать реальный дескриптор разблокировки, поиграйте с ним и посмотрите, как он себя ведет. Возможно, вам придется реагировать на события по-разному (что произойдет, если вы перетащите за пределы ползунка). Но вы должны быть в состоянии понять суть этого.

Ответ 4

В Swift:

slider.setMinimumTrackImage(UIImage(), forState: .Normal)
slider.setMaximumTrackImage(UIImage(), forState: .Normal)

Ответ 5

В ответ на поставленный вопрос вы можете установить прозрачный 1px png для минимального и максимального изображений треков.

Ответ 6

Похоже, просто установить цвет оттенка, чтобы очистить его...

    [slider setMinimumTrackTintColor:[UIColor clearColor]];
    [slider setMaximumTrackTintColor:[UIColor clearColor]];

Ответ 7

Ответа на этот вопрос @Arjay Waran является лучшим, на мой взгляд.

Вот его версия Swift 3.0.

slider.minimumTrackTintColor = UIColor.clear
slider.maximumTrackTintColor = UIColor.clear

Приветствия