Эй, у меня была проблема с UIPickerView ..... когда я вызывал reloadAllComponents, он не вызывал widthForComponent, но вызывал другие методы делегата, такие как titleForRow .... Я понятия не имею, почему это, возможно, яблоко не хочет, чтобы ширина изменялась динамически? во всяком случае, это было на другом экране, поэтому у меня не было проблемы с анимацией / без анимации. Я обнаружил, что, сбросив делегат средства выбора, я мог получить widthForComponent для повторного вызова!
т.е.
picker.delegate = view;
где view реализует UIPickerViewDelegate .... надеюсь, это кому-нибудь поможет!