【问题标题】:UIPopoverPresentationController width and height not settingUIPopoverPresentationController 宽度和高度未设置
【发布时间】:2017-04-06 06:56:16
【问题描述】:

我正在尝试展示一个弹出框控制器,但由于某种原因,我无法正确设置弹出框的宽度/高度。这是我正在使用的代码:

这是我的代码:

        UIStoryboard* myStoryboard = self.storyboard;

        ScenarioPopOver* popOver = (ScenarioPopOver*)[myStoryboard instantiateViewControllerWithIdentifier:@"scenarioPopover"];  

        popOver.modalPresentationStyle = UIModalPresentationPopover;
        [self presentViewController:popOver animated:YES completion:nil];

        // configure the Popover presentation controller
        UIPopoverPresentationController *popController = [popOver popoverPresentationController];
        popController.permittedArrowDirections = UIPopoverArrowDirectionUp;
        popController.delegate = self;

        // in case we don't have a bar button as reference
        popController.sourceView = self.view;
        popController.sourceRect = CGRectMake(self.view.center.x - 25.0, 10.0, 50.0, 50.0);

但是弹出框总是这样出现:

【问题讨论】:

  • 这听起来很奇怪,但是,为我试一试。在您第一次访问self.view 之前,只需单独一行,添加:[self view];。我有一个类似的问题,当弹出框第一次出现时视图没有正确加载 - 使用类似的方法访问视图似乎可以解决它.....
  • 没有骰子。仍然得到相同的结果。

标签: ios uipresentationcontroller


【解决方案1】:

以防万一有人偶然发现这个问题。我试图在 UIPopoverPresentationController 而不是其中的 UIViewController 上设置 preferredContentSize。正确的代码如下:

UIStoryboard* myStoryboard = self.storyboard;

    ScenarioPopOver* popOver = (ScenarioPopOver*)[myStoryboard instantiateViewControllerWithIdentifier:@"scenarioPopover"];

    popOver.modalPresentationStyle = UIModalPresentationPopover;
    [self presentViewController:popOver animated:YES completion:nil];

    // configure the Popover presentation controller
    UIPopoverPresentationController *popController = [popOver popoverPresentationController];
    popController.permittedArrowDirections = UIPopoverArrowDirectionUp;
    popController.delegate = self;
    popOver.preferredContentSize = CGSizeMake(400.0, 300.0);

    // in case we don't have a bar button as reference
    popController.sourceView = self.view;
    popController.sourceRect = CGRectMake(self.view.center.x - 150.0, 10.0, 0.0, 0.0);

【讨论】:

    猜你喜欢
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    相关资源
    最近更新 更多