Как сделать UISlider "дорожкой" невидимым?
Я пытаюсь подражать функции Apple "Slide to Unlock" в моем приложении. Я добираюсь до этой точки (изображение ниже), но, как вы видите, "дорожка" UISlider видна и скрывает мой текст. Есть ли способ программно изменить атрибут, который сделает невидимым "дорожку"?
![alt text]()
Пожалуйста, дайте мне знать, если вам нужен какой-либо из моего кода.
Спасибо заранее!
EDIT: если я изменил ползунок альфа на 0, он избавится от моей скользящей кнопки, так что это не сработает, если я не ошибаюсь.:)
Ответы
Ответ 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
Приветствия