Высота UIPickerView по умолчанию - PullRequest
12 голосов
/ 02 мая 2011

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

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

Ответы [ 4 ]

15 голосов
/ 15 ноября 2011

Предупреждение, которое увидел Андре, похоже, больше не возникает (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 говорит, что не делайте этого, и это, кажется, вызывает проблемы рендеринга.

1 голос
/ 29 ноября 2016

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

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

1 голос
/ 02 мая 2011

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

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

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

0 голосов
/ 02 мая 2011

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

...