Xcode preferredContentSize不会收缩

Xcode preferredContentSize不会收缩,xcode,ios7,Xcode,Ios7,我使用UIPopoverController弹出一个窗口。我使用preferredContentSize设置大小。然后,我使用一个更大尺寸的新视图控制器。当子视图弹出时,我喜欢将窗口恢复到原始大小。但似乎不起作用 我已经将self.preferredContentSize=MyWindowsSize;但它似乎无法恢复 在iOS6或之前的版本中,我将ContentSizeForvieWinPover设置为CGSizeZero,然后设置适当的大小。但是在iOS7上,它会使弹出窗口消失。我能想到的唯一

我使用UIPopoverController弹出一个窗口。我使用preferredContentSize设置大小。然后,我使用一个更大尺寸的新视图控制器。当子视图弹出时,我喜欢将窗口恢复到原始大小。但似乎不起作用

我已经将self.preferredContentSize=MyWindowsSize;但它似乎无法恢复


在iOS6或之前的版本中,我将ContentSizeForvieWinPover设置为CGSizeZero,然后设置适当的大小。但是在iOS7上,它会使弹出窗口消失。

我能想到的唯一解决方案是关闭您的弹出窗口,并自动以您想要的新大小再次显示它。我在iOS 8上也遇到了问题,因为它的内容大小在高度上不会缩小。宽度缩小了,但高度对我来说只能增加

看看

:

它可能会帮助您使用委托协议重新定位rect

解决方案:

好的,这是我的解决方案。在显示popover控制器的视图控制器中,可以设置一个名为“resetContentSize:(CGSize)size”的委托。e、 g.在演示视图控制器的头文件中:

@protocol PopoverDelegate <NSObject>
- (void)resetContentSize:(CGSize)size
@end
从popover控制器,可以在头文件中添加PopoOverdelegate

@property (nonatomic, weak) id<PopoverDelegate> popoverDelegate;
这为我解决了问题:

override func viewDidAppear(animated: Bool)
{
    navigationController?.preferredContentSize = preferredContentSize
    super.viewDidAppear(animated)
}

有同样的问题。我的解决方案是在navigationController上设置preferredContentSize,而不是
self

override func viewWillAppear(_ animated: Bool) {
    self.navigationController?.preferredContentSize = myControllerSize
}
override func viewDidAppear(animated: Bool)
{
    navigationController?.preferredContentSize = preferredContentSize
    super.viewDidAppear(animated)
}
override func viewWillAppear(_ animated: Bool) {
    self.navigationController?.preferredContentSize = myControllerSize
}