UIPopoverController слишком велик, а UIPickerView слишком мал - PullRequest
3 голосов
/ 11 ноября 2011

У меня UIPickerView отображается внутри UIPopoverController.Размеры UIPickerView: 320x216.По какой-то причине UIPickerView, по-видимому, составляет ~ 3/5 от необходимой высоты, а UIPopoverController простирается вплоть до нижней части экрана.

Пожалуйста, см. Код ниже.

Спасибо!

self.picker = [[[UIPickerView alloc] initWithFrame:CGRectMake(0, self.view.bounds.size.height+44, 320, 216)] autorelease];
self.picker.backgroundColor = [UIColor clearColor];
self.picker.showsSelectionIndicator = YES;
self.picker.delegate = self;
self.picker.dataSource = self;
self.picker.transform = CGAffineTransformMakeScale(-1, 1);
UIViewController *pickerController = [[UIViewController alloc] init];
[pickerController setView:self.picker];
UIPopoverController *pickerPopover = [[UIPopoverController alloc] initWithContentViewController:pickerController];
[pickerPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
pickerPopover.delegate = self;
self.popover = pickerPopover;
[pickerController release];
[pickerPopover release];

1 Ответ

8 голосов
/ 11 ноября 2011

Причиной появления "сжатого" средства выбора является следующая строка:

[pickerController setView:self.picker];

Вместо этого добавьте представление выбора как подпредставление:

[pickerController.view addSubview:picker];


Далее, чтобы исправить высоту всплывающего окна, установите popoverContentSize перед тем, как представить его:

pickerPopover.popoverContentSize = picker.frame.size;


Кроме того, исправьте кадр вида сборщика из этого:

CGRectMake(0, self.view.bounds.size.height+44, 320, 216)

к этому:

CGRectMake(0, 0, 320, 216)
...