MinView UISlider выходит за его пределы и центр большого пальца

Я хотел собственный ползунок, и требование заключалось в том, что высота minView должна быть 8 pt, а maxView должна быть 4 pt, видимые углы должны быть закруглены.

Я дал минимальное и максимальное изображение ползунка как четкое изображение альфы как 0,0.

Для maxView я создал UIView и присвоил ему ширину, равную ширине ползунка, и сделал его углы закругленными.

Для minView я создал UIView, и его ведущее положение равно ведущему ползунку, а замыкающее должно быть равно центру большого пальца.

введите здесь описание изображения

Вот логика того, что я сделал.

func changeValue() {
    let difference = slider.maximumValue - slider.minimumValue
    let thumbWidth = CGFloat(44/2)
    let scale = (slider.frame.size.width-thumbWidth)/CGFloat(difference)
    let width = scale * CGFloat(slider.value)
    minSlideWidth.constant = width
    self.view.layoutIfNeeded()
}

Но ширина minView не увеличивается, а уменьшается с центром большого пальца. Если вы видите изображение, оно уже пересекло большой палец UIslider.

введите здесь описание изображения


person Anirudha Mahale    schedule 12.10.2018    source источник
comment
Зачем это делать с дополнительным видом? Используйте setMinimumTrackImage и setMaximumTrackImage.   -  person rmaddy    schedule 12.10.2018
comment
Я сделал это, и закругленные углы выглядят не очень хорошо.   -  person Anirudha Mahale    schedule 12.10.2018
comment
Какие закругленные углы вы имеете в виду?   -  person rmaddy    schedule 12.10.2018
comment
Закругленные углы для слайдера minImage и maxImage.   -  person Anirudha Mahale    schedule 12.10.2018


Ответы (1)


Как насчет такого подхода?

Настройте свойства элемента управления UISlide.

  1. setMinimumTrackImage с изображением 8pt.
  2. setMaximumTrackImage с изображением 4pt.

Изображения дорожек могут быть воссозданы с помощью растяжимого изображения, чтобы сохранить закругленные углы. Вы можете найти его в разделе Defining a Stretchable Image раздела ссылки на UIImage. Это очень полезно для отслеживания изображения слайдера.

person AechoLiu    schedule 12.10.2018
comment
Хорошо, я попробую, но что не так в моей логике? Почему это выходит за пределы большого пальца? Не могли бы вы помочь мне с этим???? - person Anirudha Mahale; 12.10.2018
comment
Я полагаю, что вы должны получить рамку ползунка с помощью этого метода: :). Рамка управления не равна рамке средней гусеницы. - person AechoLiu; 12.10.2018
comment
Или вы можете получить изображение центра большого пальца с помощью thumbRect(forBounds:trackRect:value :). - person AechoLiu; 12.10.2018