Я создаю массив для диапазона 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)
)
}
})
}