【问题标题】:problem in setting PopoverContentSize设置 PopoverContentSize 的问题
【发布时间】:2011-04-03 03:36:58
【问题描述】:

我无法将 contentsize 设置为 size(650,400)。但即使我创建了具有相同宽度和高度的 popoverController。

不知道什么是担心? 点击回车后显示如下

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

【问题讨论】:

  • 我会发布你的代码,它可能会帮助你得到答案

标签: ipad uipopovercontroller


【解决方案1】:

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

【讨论】:

  • 不管我们是否初始化弹出框,它都可以正常工作。问题是在弹出框出现后将 contentsize 设置为 size(650,400)。
  • 我注意到之前显示的弹出框的内容大小会出现问题,您应该可以设置大小并且它会更新,但似乎并非总是如此.我解决这个问题的方法是在弹出框上再次调用 presentPopoverFromRect 然后它更新到新的大小。
【解决方案2】:

来自 Apple 的文档:

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      考虑使用:

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

      这将以纵向和横向显示弹出框。

      【讨论】:

        【解决方案5】:

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

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

        ...&...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-02-14
          • 2011-02-19
          • 2015-02-23
          • 2023-04-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多