2011-11-11 119 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