1

我有一个 UIPopovercontroller,其中包含从视图控制器生成的内容。

popOverController = [[UIPopoverController alloc]initWithPopUp:emLightPopUp];
    popOverController.delegate = self;

// Get device position.
    CGRect position = {parentButton.frame.origin,emLightPopUp.popUpView.frame.size};
    CGSize popUpViewFrameSize = emLightPopUp.popUpView.frame.size;

链接截图:http: //i.stack.imgur.com/AxqoG.png

问题是当我向上更改选择设备(触摸按钮)的位置时,显示的弹出窗口将像屏幕截图一样调整大小。

我已经尝试在 uipopover 的子类中设置内容大小,但它仍然不起作用:

 self.popoverContentSize  = emLightPopUp.popUpView.frame.size;

编辑: 我通过计算显示弹出窗口的位置并将滚动视图滚动到上方位置来解决这个问题。看看这段代码:

-(void)moveDeviceOutMiddleScreen:(id)deviceButton
{
    UIButton* button = (UIButton*)deviceButton;
    CGFloat yPositionRange = button.frame.origin.y - self.floorZoomScrollView.contentOffset.y;

    int middle_top_y = 70;
    int middle_bottom_y = 166;
    if (yPositionRange > middle_top_y && yPositionRange < middle_bottom_y) {
        CGRect newRect = CGRectMake(self.floorZoomScrollView.contentOffset.x,
                                    self.floorZoomScrollView.contentOffset.y +yPositionRange*0.6,
                                    self.floorZoomScrollView.frame.size.width, self.floorZoomScrollView.frame.size.height);
        [self.floorZoomScrollView scrollRectToVisible:newRect animated:NO];
    }
}

感谢您的回复。

4

1 回答 1

0

您正在自己设置值。

self.popoverContentSize  = emLightPopUp.popUpView.frame.size;

相反,您应该设置所需的大小(假设emLightPopUp是弹出控制器中显示的视图控制器):

[self setPopoverContentSize:emLightPopUp.bounds animated:YES];
于 2013-11-06T09:35:26.440 回答