preferredContentSize不会缩小

时间:2013-09-22 08:33:08

标签: xcode ios7

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

我已经把self.preferredContentSize = myWindowSize;但它似乎无法恢复。

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

3 个答案:

答案 0 :(得分:4)

这解决了我:

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

答案 1 :(得分:0)

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

看看

https://developer.apple.com/library/ios/documentation/uikit/reference/UIPopoverControllerDelegate_protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIPopoverControllerDelegate/popoverController:willRepositionPopoverToRect:inView

使用委托协议

可能会帮助您重新定位rect

解决方案:

好的,这是我的解决方案。从提供弹出控制器的视图控制器,您可以设置一个名为“resetContentSize:(CGSize)size”的委托。例如在您的呈现视图控制器的头文件中:

@protocol PopoverDelegate <NSObject>
- (void)resetContentSize:(CGSize)size
@end

在您提供弹出控制器的实现文件中,您可以设置委托

self.popoverController.delegate = self;

从弹出控制器中,您可以在头文件

中添加PopoverDelegate
@property (nonatomic, weak) id<PopoverDelegate> popoverDelegate;

并在实现文件中调用delegate方法:

[popoverDelegate resetContentSize:CGSizeMake(320.0f,205.0f)];

答案 2 :(得分:0)

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

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