设置PopoverContentSize时出现问题

3

我无法使用size(650,400)设置内容大小。但是即使我使用相同的宽度和高度创建popoverController,它也能够被创建。

不知道出了什么问题? 在点击Enter后,它显示如下:

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

点击显示按钮后,它看起来是这样的: 图片描述

 -(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"];
  }

我会发布你的代码,这可能会帮助你获得答案。 - lxt
5个回答

2

不太清楚你的问题,但是对于弹出框,您需要确保在显示弹出框之前在内容视图控制器上设置popoverContentSize。通常我会在将用于弹出框的视图控制器的viewDidLoad方法中完成此操作。


无论我们在哪里初始化弹出窗口,它都能正常工作。问题是在弹出窗口出现后设置大小为(650,400)的内容大小。 - Anand
我注意到在显示弹出窗口后更改其内容大小存在问题,你应该只需设置大小即可更新,但这似乎并不总是有效。我解决这个问题的方法是再次调用presentPopoverFromRect函数来更新弹出窗口的大小。 - Cory Powers

1

考虑使用:

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

这将在纵向和横向方向上显示弹出窗口。


1

来自苹果文档:

“您指定的宽度值必须至少为320个点,最多不超过600个点。”

也许将宽度设置为650是问题所在。


1

我曾遇到类似的问题,无法在设备旋转时改变弹出窗口控制器的大小。我在类似问题的答案中找到了解决方案的信息。

因为我是从一个按钮中呈现出弹出窗口,UIKit“尝试”在旋转期间调整弹出窗口的大小(因为在更改到不同的设备方向后按钮的位置可能会有所不同)。即使我确切地知道每种情况下我想要弹出窗口的大小,它也没有尊重我的调用来设置PopoverContentSize。我的解决方案是在willAnimateRotationToInterfaceOrientation中关闭弹出窗口,然后在设置适当的contentSizeForViewInPopover和popoverContentSize值之后,在didRotateFromInterfaceOrientation中重新呈现相同的弹出窗口。希望这能帮到您


0

我注意到你有一个名为popover的UIViewController应该显示在你所引用的mpopover中, 请导航至那个类,在ViewController周期的ViewDidLoad方法中 确保添加以下代码

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

...&...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接