我使用UIPopoverController弹出窗口。我使用preferredContentSize设置大小。然后,我使用Push更大尺寸的新视图控制器。当子视图弹出时,我想将窗口恢复到原始大小。但似乎不起作用。
我已经把self.preferredContentSize = myWindowSize;但似乎无法恢复。
[在iOS6或更低版本中,我将contentSizeForViewInPopover设置为CGSizeZero,然后设置适当的大小。但是在iOS7上,它将使弹出窗口消失。
这为我解决了问题:
override func viewDidAppear(animated: Bool)
{
navigationController?.preferredContentSize = preferredContentSize
super.viewDidAppear(animated)
}
我唯一想到的解决方案是关闭弹出窗口,然后自动以所需的新大小再次显示它。对于iOS 8,我也遇到了麻烦,因为iOS 8的内容大小不会缩小。宽度缩小,但高度仅对我而言增加。
看看
可能会帮助您使用委托协议重新定位矩形
解决方案:
好,这是我的解决方案。在显示弹出框控制器的视图控制器中,可以设置一个名为“ resetContentSize:(CGSize)size”的委托。例如在您呈现的视图控制器的头文件中:
@protocol PopoverDelegate <NSObject>
- (void)resetContentSize:(CGSize)size
@end
在提供弹出框控制器的实现文件中,可以设置委托
self.popoverController.delegate = self;
从您的popover控制器,您可以在头文件中添加PopoverDelegate
@property (nonatomic, weak) id<PopoverDelegate> popoverDelegate;
并在您的实现文件中调用委托方法:
[popoverDelegate resetContentSize:CGSizeMake(320.0f,205.0f)];
有同样的问题。对我来说,解决方案是在navigationController上设置preferredContentSize,而不是self
。
override func viewWillAppear(_ animated: Bool) {
self.navigationController?.preferredContentSize = myControllerSize
}