Я создаю массив для диапазона UISlider и помещаю каждое значение в метку под ползунком, но если я меняю экран iPhone (5s, 6s, 8, Xr), метка не показывает правильное положение UISlider ценности.
Как мне связать диапазон значений массива UISLider с меткой ниже для каждого экрана iPhone?
Иерархия представления отладки
Существует метод настройки Auto Layout независимо от экрана iPhone. Там, где вы видите Easy.Layout, который является EasyPeasy Auto-Layout, это то же самое, что и документация Apple Auto Layout Constrains.
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)
)
}
})
}