UIPickerView, поскольку inputView сбивается при изменении ориентации

Я использую стандартное представление UIPicker в качестве inputView для текстового поля в приложении iPhone. Когда представление загружается либо в альбомной, либо в книжной ориентации, размер средства выбора совпадает с размером соответствующей клавиатуры. Однако, когда вы поворачиваете устройство один раз внутри представления, средство выбора не изменяет его высоту должным образом, как это происходит с его шириной. У меня установлен UIViewAutoresizingFlexibleWidth. Когда я попытался установить UIViewAutoresizingFlexibleHeight, средство выбора перепуталось (изменчивая графика, обрезание компонента) при вращении, хотя высота правильная! Кто-нибудь понял это?


person Dash    schedule 27.09.2011    source источник


Ответы (2)


Я обнаружил, что если вы работаете с iOS 7, просто добавьте:

pickerView.autoresizingMask = UIViewAutoresizingFlexibleHeight;

Это решило проблему для меня. Переход не очень прерывистый, похоже, он "должен" выглядеть.

person Robert Bentley    schedule 03.02.2014

Я нашел пластырь:

В didRotateFromInterfaceOrientation: вашего хостинга viewController вызовите setNeedsLayout в этом представлении выбора. Странные сбои макета видны во время поворота, но убираются в конце.

person rgeorge    schedule 10.01.2012
comment
Этот pickerView является inputView текстового поля. Поэтому к нему нельзя получить доступ в родительском ViewController - person Ace Green; 07.10.2015