Подтвердить что ты не робот

Высота по умолчанию UIPickerView

Как я могу программно получить высоту по умолчанию экземпляра UIPickerView в соответствии с разрешением и ориентацией устройства, на котором в настоящее время работает приложение?

Я бы не хотел использовать жестко заданное значение для этого параметра, в случае, если новые устройства будут поддерживать разные разрешения экрана и, таким образом, определит, что этот компонент имеет другой размер по умолчанию.

4b9b3361

Ответ 1

Предупреждение, которое увидел Андре, похоже, больше не происходит (XCode 4.2; iOS SDK 5.0). Если вы создаете его с помощью initWithFrame и придаете ему высоту ноль, вы можете прочитать его высоту из свойства frame.height:

uiPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 77, 320, 0)];
DLog(@"uiPickerView=%@",uiPickerView);

дает:

uiPickerView=<UIPickerView: 0x9a28c40; frame = (0 77; 320 216); layer = <CALayer: 0x9a28d00>>

Итак, высота 216 по умолчанию.

Я не смог найти определение для этого в заголовках, поэтому его чтение кажется самым безопасным способом.

Можно установить фрейм с ненулевой высотой, но Apple, говорят, этого не делают, и это, похоже, вызывает проблемы с рендерингом.

Ответ 2

Если вы создадите экземпляр с высотой 0, он будет переопределен с соответствующей высотой по умолчанию, и вы можете просто получить его frame.size.height.

Однако на iPad это выдает предупреждение (проверено несколько дней назад). В конечном итоге мне пришлось использовать жестко настроенные значения для iPad...

P.S. Это было для UIDatePicker; не уверен, что это то же самое для UIPickerView.

Ответ 3

С автоматической компоновкой мне было интересно то же самое из-за того, что вы не можете прикрепить ее к нижней части.

Высота по умолчанию без изменений в UIPickerView 216px ** UIPickerView **

Ответ 4

Вы можете использовать свойство frame для uipickerview.