UIPopoverController 太大而 UIPickerView 太小

发布于 2024-12-15 01:16:51 字数 1074 浏览 3 评论 0原文

我有一个 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];

I have a UIPickerView displayed inside a UIPopoverController. The dimensions of the UIPickerView are: 320x216. For some reason, the UIPickerView seems to be ~3/5 of the proper height, and the UIPopoverController spans all the way down to the bottom of the screen.

Please see the code below.

Thanks!

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你在看孤独的风景 2024-12-22 01:16:51

“压扁”选择器视图的原因似乎是这一行:

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

The reason for the "squashed" picker view seems to be this line:

[pickerController setView:self.picker];

Instead, add the picker view as a subview:

[pickerController.view addSubview:picker];

Next, to fix the popover height, set popoverContentSize before presenting it:

pickerPopover.popoverContentSize = picker.frame.size;

Also, fix the picker view's frame from this:

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

to this:

CGRectMake(0, 0, 320, 216)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文