我有一个UIPopovercontroller,其中包含一个从viewcontroller生成的内容。
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];
}
}
感谢您的回复。
答案 0 :(得分:0)
您正在为自己设置值。
self.popoverContentSize = emLightPopUp.popUpView.frame.size;
相反,您应该设置所需的大小(假设emLightPopUp
是弹出控制器中显示的视图控制器):
[self setPopoverContentSize:emLightPopUp.bounds animated:YES];