在飞行中更改PopOverViewController的首选内容大小

时间:2015-01-23 14:58:22

标签: ios uipopovercontroller preferredsize

我正在尝试从childViewController内部更改UIPopOverController的首选内容大小。

首先,我以这种方式呈现PopOverViewController

 DateViewController *dateView = [[DatePickerViewController alloc] initWithNibName:@"DateViewController" bundle:nil];

        UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:dateView];


        m_tableCell = (NotesCell *)[m_tableView cellForRowAtIndexPath:indexPath];


            popViewController = [[UIPopoverController alloc] initWithContentViewController:navController];
            popViewController.backgroundColor = [[AppManager instance].themeManager navigationBarColor];
            popViewController.delegate = self;


                //the rectangle here is the frame of the object that presents the popover,
                //in this case, the UIButton…


                CGRect popRect = CGRectMake(m_tableCell.customView.frame.origin.x,
                                            m_tableCell.customView.frame.origin.y,
                                            m_tableCell.customView.frame.size.width,
                                            m_tableCell.customView.frame.size.height);
                                [popViewController presentPopoverFromRect:popRect
                                                   inView:m_tableCell
                                 permittedArrowDirections:UIPopoverArrowDirectionRight
                                                 animated:YES];

所以在我的childViewController里面,(DateViewController),我有一个按钮,当切换时会调用一个函数

    - (void)toggleButton
    {
       if(small)
       {
               self.presentingViewController.presentedViewController.preferredContentSize = CGSizeMake(320,485);
       }
       else
       {
             self.presentingViewController.presentedViewController.preferredContentSize = CGSizeMake(320,320);
       }
}

这工作正常,但是我们知道UIPopOverViewController有箭头,所以当我调整popOverView的大小时,箭头也会上下动画,这是我不想要的。我不能在图像中显示这个,所以请原谅我。

需要帮助

兰吉特。

1 个答案:

答案 0 :(得分:0)

首先,您发布的代码不起作用,因为在else语句中,您指定CGSizeMake在构造时只给出一个值。

其次,您可以通过指定popoverArrowDirection property

来定义允许该箭头指向的方向