UIPopoverController的内容视图大小

问题描述

| 我有一个从iPad上的CGRect呈现的UIPopoverController,如下所示:
MarkersPopViewController *markersPop = [[MarkersPopViewController alloc] initWithNibName:@\"MarkersPopView\" bundle:nil];
self.TestPopoverController = [[[UIPopoverController alloc] initWithContentViewController:markersPop] autorelease];
[TestPopoverController presentPopoverFromrect:CGRectMake(20,20,700,500) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES];
我的MarkersPopView是容器视图,具有一个UITableView(占.xib的大部分),以及一个UISegmentedControl,位于UITableView顶部的正上方。 UITableView使用UITableViewCell的自定义子类,其中每行是(700,100)。 当我运行我的应用程序时,PopoverController可能只有50点宽,并且紧贴屏幕的左侧。我想使视图的宽度适合初学者,然后将其居中。 UIPopoverController为何这么小有原因吗?我认为如果未使用setPopoverContentSize:,则UIPopoverController使用内容视图的认大小。谢谢。     

解决方法

        传递给presentPopoverFromRect的CGRect是弹出框将显示在其一侧的矩形。它不是弹出框将出现的框架。 由于您要求箭头位于弹出框的右侧,因此它会尝试将弹出框显示在20,20,700,500的左侧。 要以20,20(实际上是箭头提示的位置)显示弹出框,请传递20,1,1的CGRect。 您可能仍然必须指定popoverContentSize。