设置PopoverContentSize时出现问题

时间:2011-04-03 03:36:59

标签: ipad uipopovercontroller

我无法使用大小(650,400)设置内容大小。但是我甚至创建了具有相同宽度和宽度的popoverController。高度它正在创建。

不知道有什么担心? 点击进入后,显示如下

enter image description here

- (IBAction)setButtonTapped:(id)sender
{
     popover *mpopover      =   [[popover alloc] init];

    UINavigationController  *NavController      =   [[UINavigationController alloc] initWithRootViewController:mpopover];

    //NavController.navigationBar.backgroundColor = [UIColor darkGrayColor];
    mPickerPopover  = [[[UIPopoverController alloc] initWithContentViewController:NavController] retain];

    CGSize popoversize      =   CGSizeMake(400, 90);

    [mpopover setparent:mPickerPopover];

    [mpopover setToolBarFrame:popoversize];

    mPickerPopover.popoverContentSize   = popoversize;

    [mPickerPopover presentPopoverFromRect:CGRectMake([sender frame].origin.x, [sender frame].origin.y, 20, 20) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

    [mpopover release];
}

点击显示按钮看起来像这样 enter image description here

 -(void)buttonView:(id)sender
 {

  CGSize popoversize        =   CGSizeMake(650, 320);

  [parent setPopoverContentSize:popoversize animated:YES];


  [toolbar setFrame:CGRectMake(0, popoversize.height- 90, popoversize.width, 60)];

  CATransition *transition = [CATransition animation];
  transition.type = kCATransitionPush;
  transition.duration = 1.0f;
  transition.timingFunction = UIViewAnimationCurveEaseInOut;
  [self.view.layer addAnimation:transition forKey:@"transitionViewAnimation"];
  }

5 个答案:

答案 0 :(得分:2)

您要问的是什么并不是很清楚,但是对于弹出窗口,您需要确保在显示弹出窗口之前在内容视图控制器上设置popoverContentSize。通常我会在我的视图控制器的viewDidLoad方法中执行此操作,该方法将用于弹出窗口。

答案 1 :(得分:1)

来自Apple的文档:

“您指定的宽度值必须至少为320磅且不超过600磅。”

可能尝试将宽度设置为650是问题所在。

答案 2 :(得分:1)

我遇到了类似的问题,因为我无法在设备旋转期间更改弹出控制器的大小。我在answer to a similar question找到了导致我的解决方案的信息。

因为我是从Bar按钮呈现弹出窗口,所以UIKit通过在旋转期间调整弹出窗口的大小来“尝试”帮助(因为在更改为不同的设备方向后按钮的位置可能会有所不同)。即使我确切地知道在每种情况下我想要弹出窗口的大小,但它并不尊重我对setPopoverContentSize的调用。我的解决方案是在willAnimateRotationToInterfaceOrientation中关闭popover,然后在为contentSizeForViewInPopover和popoverContentSize设置适当的值后,在didRotateFromInterfaceOrientation中重新显示相同的popover。 IHTH

答案 3 :(得分:1)

考虑使用:

-(BOOL)splitViewController:(UISplitViewController *)svcontroller shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation 
{
    return NO;
}

这将呈现纵向和横向方向的popover。

答案 4 :(得分:0)

我注意到你有一个名为popover的UIViewController应该在popoever中显示 您引用为mpopover 导航到该类以及ViewController循环的ViewDidLoad方法 确保添加以下代码

self.contentSizeForViewInPopover = CGSizeMake(400, 90); // or Any size you like

...&安培; ...