2011-11-11 158 views
3

我有一個UIPickerView顯示在UIPopoverController內。 UIPickerView的尺寸爲:320x216。出於某種原因,UIPickerView似乎是正確高度的3/5,並且UIPopoverController一直延伸到屏幕的底部。UIPopoverController太大,UIPickerView太小

請參閱下面的代碼。

謝謝!

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]; 
+0

只是爲了任何人使用Google到這一點,不要忘記你只需設置柱高度 - (CGFloat)pickerView:(UIPickerView *)pickerView ** rowHeightForComponent:**(NSInteger)component {return 30.0; }(不要忘記你的.h文件中的!) – Fattie

回答

8

的原因 「壓扁」 選擇器視圖似乎是這一行:

[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) 
+0

謝謝!這工作! 只是一個問題 - 爲什麼使用'setView:'會導致問題? – joshim5

+0

這是另一個很好的問題。不知道,但看起來像選擇器視圖的問題。 – Anna