Кстомный сегмент контроллер


#1

Всем привет! Сделал кастомный сегмент контроллер по видио уроку одно ютюбера. Работает все хорошо кроме длинны выбранного элемента. В зависимости от устройства в стореборде, а именно если в стореборде выбран девайс и его экрана. Если это например 6s то на устройствах с такой же шириной экрана (6, 7, 8, X) все нормально, а на плюсах короче чем надо и наоборот если выбран девайс 6 плюс то все работает на 8 Плюс и 7 Плюс нормально, а на остальных больше чем надо. Думал это проблемы xcodе компилятора но при выгрузки на телефон все тоже самое(зависит от сториборда) Проект прилагается . Ширина выбранного объекта устанавливаю в строчке 75-77. Подскажите, как решить эту проблему?


#2

Советую поискать другого рукожопого ютубера.

В качестве временной меры, пересчитайте ширину “selector” в layoutSubviews:

class SegmentedControl: UIControl {
    // .............................    
    override func layoutSubviews() {
        super.layoutSubviews()
        selector.frame.size.width = frame.width / CGFloat(buttons.count)
    }
}


#3

Привет. Я вчера скачал этот проект, потыкал в него палочкой, но не смог разобраться с проблемой.
Ты говоришь, что мера временная. А есть какая-то постоянная(нормальная)?
И почему надо пересчитывать ширину фрейма?


#4

Переписать заново https://yadi.sk/d/hASxNBX03TL9aa

selectorWidth не правильно рассчитывается.