2015-06-21 2 views
3

Я пытаюсь реализовать элемент управления, чтобы показать ход видео, и я использую UISlider с пользовательским изображением большого пальца, но изображение большого пальца не начинается с самого начала, и оно не идет до конца.UIslider thumb thumb не начинается с начала

playerProgress = UISlider(frame: CGRectMake((btnImage.size.width + 2 * VideoViewControllerUX.ControlPadding), 0, (screenRect.size.width - (btnImage.size.width + 3 * VideoViewControllerUX.ControlPadding)), btnImage.size.height)) 
playerProgress.setThumbImage(UIImage(named: "slider"), forState: UIControlState.Normal) 
playerProgress.maximumValue = 100 
playerProgress.minimumValue = 0 
playerProgress.addTarget(self, action: "playerProgressChanged:", forControlEvents: UIControlEvents.ValueChanged) 

enter image description here

Я не уверен, что происходит.

Thumb Изображение: enter image description here

+0

Какое должно быть изображение большого пальца? Этот контроль выглядит довольно нормальным для меня. –

+0

@CraigOtis Я добавил изображение большого пальца (его в белом цвете просто щелкните правой кнопкой мыши рядом с текстом и загрузите его). –

ответ

2

То, что вы видите, это нормально. Ползунок оставляет дополнительное пространство на обоих концах, так что большой палец имеет минимальное или максимальное значение, когда край большого пальца находится в конце рамки слайдера.

Посмотрите на эти ползунки. Они имеют те же горизонтальные позиции и ширина: большой палец

enter image description here

первый слайдер находится так далеко влево, как он будет идти. Дальше не идет дальше, снаружи рама трека; он останавливается, когда его луч попадает в рамку трека. Это равно нулю.

Если вам не нравится где большой палец изображение втягивается по отношению к общей трассе, вам нужно создать подкласс UISlider и реализовать thumbRectForBounds:trackRect:value:.

+0

Да, я сделал то, что предложил, прежде чем публиковать вопрос. Когда я переопределяю thumbRectForBounds: trackRect: значение: ползунок перестает работать (он не скользит). –

+0

переопределить func thumbRectForBounds (границы: CGRect, trackRect rect: CGRect, значение: Float) -> CGRect { let thumbImage = UIImage (named: "slider")! let thumbImageSize = thumbImage.size return CGRect (x: -10, y: 0, width: thumbImageSize.width, height: thumbImageSize.height) } Я добавил выше код, после чего ползунок перестает работать (не перемещается) –

+0

Возможно, я должен был быть более ясным. Вам нужно реализовать 'thumbRectForBounds: trackRect: значение:' _correctly_. Очевидно, что ваша реализация смехотворна: если вы даете тот же обратный прямоугольник, вне зависимости от того, что входит в значение 'value', ползунок не будет двигаться. – matt

-1

Я создал подобный слайдер путем подкласса UISlider. Вы можете проверить мой ответ here

Смежные вопросы