所以我正在使用WEPopover来显示自定义视图控制器弹出窗口。我有一个UIView,其中有一个名为containerView的UIView。在这个containerView中,我有一个UIButton。这是我想展示我的弹出窗口的地方。所以这就是我所做的:

  [self.popoverDialog presentPopoverFromRect:sender.frame inView:self.containerView permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];

问题是箭头和所有内容都从此按钮显示,但是弹出窗口超出了self.containerView的界限。我如何才能使弹出框显示在containerView范围内?

编辑:

一幅图片值一千个字,所以这里是:
浅灰色是我上面提到的containerView。从理论上讲,弹出窗口应显示在浅灰色范围内,而不会超出范围。

最佳答案

对于包含在弹出框内的视图,请转到其视图控制器并设置其属性contentSizeForViewInPopover。在这里,您可以设置大小,使其适合您的containerView的边界。

OP希望定位弹出窗口,使其仅显示在其容器视图中。我在WEPopoverController.m文件中找到了这段代码

- (void)repositionPopoverFromRect:(CGRect)rect
                       inView:(UIView *)theView
     permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections {

CGRect displayArea = [self displayAreaForView:theView];
WEPopoverContainerView *containerView = (WEPopoverContainerView *)self.view;
[containerView updatePositionWithAnchorRect:rect
                                displayArea:displayArea
                   permittedArrowDirections:arrowDirections];

popoverArrowDirection = containerView.arrowDirection;
containerView.frame = [theView convertRect:containerView.frame toView:backgroundView];

}

您可能会调用此方法,并且它可能会重新放置弹出窗口,使其现在位于容器viw中。

关于iphone - 来自按钮的presentPopoverFromRect超出范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11768185/

10-10 19:08