Настройка внешнего вида UISlider
-
09-09-2019 - |
Вопрос
Чтобы настроить внешний вид UISlider, вы можете установить ползунок и отслеживать изображения.Часть изображений трека растягивается до нужного размера.Из документации:
Растягиваемая область находится между двумя областями конечной крышки.Конечные крышки определяют части изображения, которые остаются как есть и не растянуты.Растягиваемая область представляет собой 1-точечную общую область между конечными крышками, которые можно воспроизвести, чтобы изображение появилось дольше.
Теперь у меня проблема в том, что моя растягиваемая область должна быть шириной более 1 пункта.(Это шаблон). К сожалению, ширина в 1 пункт, похоже, жестко запрограммирована в SDK.
У кого-нибудь есть идеи, как это обойти?Или мне придется для этого писать свой слайдер с нуля?
Решение
Я считаю, что для этого вам придется написать свой собственный слайдер.Кажется, не существует (публичного) API для изменения поведения UISlider в отношении растягиваемой области.
Другие советы
Просто используйте прозрачные изображения в качестве изображений отслеживания и поместите UIImageView ниже :)
Я знаю, что поздно отвечаю.
Но я решил проблему следующим образом:
4 — ширина круглой крышки в файле png.
UIImage *minimum = [UIImage imageNamed:@"slider_minimum.png"];
[slider setMinimumTrackImage:[minimum stretchableImageWithLeftCapWidth:4 topCapHeight:0]
forState:UIControlStateNormal];
Вы можете просто создать изображения настолько широких, насколько вам нужно, с предварительно обработанным шаблоном.
Вам необходимо инициализировать изображение с помощью StretchableImageWithLeftCapWidth:topCapHeight:.leftCapWidth и topCapHeight — свойства объектов изображений, доступные только для чтения, но с помощью этой функции вы можете их установить.Вы устанавливаете только левую и верхнюю части, потому что левая и правая заглушки имеют одинаковый размер, а верхняя и нижняя также одинаковы.Итак, чтобы использовать собственный слайдер с размером левой стороны 5 пикселей, вам необходимо иметь изображение шириной 11 пикселей и любой необходимой высоты:5 для левой крышки, ширина 1 пиксель, растянутая для дорожки, и еще 5 для правой.Я не играл с этим и не знаю, работает ли использование topCapHeight больше 0 как ожидалось, но подозреваю, что это не вызовет особых проблем.
Мне нужен был шаблон для моего UISlider.В итоге я установил для обоих изображений нулевое значение и добавил представление под ползунком, так как мне не нужно было, чтобы оно было разным по обе стороны от большого пальца.Это было бы сложнее, если бы вам нужно было изменить его в зависимости от позиции, но вполне выполнимо.
Чтобы создать собственный UISlider, у вас есть много способов.В зависимости от того, какую настройку вы хотите.есть свойства по умолчанию, которые вы можете установить для настройки вашего UIslider, например:setThumbImage:forState:setMinimumTrackImage:forState:setMaximumTrackImage:forState:Если вам нужна дополнительная настройка, вы можете перейти по ссылке ниже.https://medium.com/@0209neha/creating-a-custom-uislider-7756bf898832#.o1l4qhymo https://github.com/0209Neha/ExploringSlider