Как программно соединить UISlider с надписью под ползунком, который является нормальным для всех экранов iphone? - PullRequest
0 голосов
/ 04 июля 2019

Я создаю массив для диапазона UISlider и помещаю каждое значение на метку под слайдером, но если я меняю экран iPhone (5s, 6s, 8, Xr), метка не показывает правильную позициюзначений UISlider.

Как мне связать диапазон значений массива UISlider с меткой ниже для каждого экрана iPhone?

Ожидаемые результаты

Иерархия просмотра отладки

Существует способ настройки Auto Layout независимо от экрана iphone.,Где вы видите Easy.Layout, то есть EasyPeasy Auto-Layout - это то же самое, что и документация Apple. Ограничения Auto Layout.

func setupLabels() {
    let values = [0, 3.7, 11, 22, 43, 50, 100]
    values.forEach({
        let sliderValuesLabel = UILabel()
        if $0 == values.first {
            sliderValuesLabel.text = "ALLE"
            wrapperView.addSubview(sliderValuesLabel)
            sliderValuesLabel.easy.layout(

                Top(15).to(uislider),
                Leading().to(uislider, .leading), // Left Position
                Bottom(1)
            )

        } else if $0 == values.last {
            sliderValuesLabel.text = "\(Int($0))+"
            wrapperView.addSubview(sliderValuesLabel)
            sliderValuesLabel.easy.layout(
                Trailing().to(uislider, .trailing), // Right Position
                Top(15).to(uislider),
                Bottom(1)
            )

        } else  {
            sliderValuesLabel.text = "\(Int($0))"
            wrapperView.addSubview(sliderValuesLabel)

            let thumbRect = uislider.thumbRect(forBounds: uislider.bounds,
                                               trackRect: uislider.trackRect(forBounds: uislider.bounds),
                                               value: uislider.value)
            let thumRectToView = uislider.convert(thumbRect, to: uislider ) // Convert

            sliderValuesLabel.easy.layout(
                Top(15).to(uislider),
                Bottom(1),
                CenterX(thumRectToView.midX)

            )
        }
    })

}

1 Ответ

0 голосов
/ 04 июля 2019

Вам нужно будет установить ограничения на метку с помощью Auto-Layout. Это сохранит его в фиксированном положении на всех устройствах.

...