问题描述
|
我有一个从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。