preferredContentSize不会缩小

问题描述 投票:7回答:3

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

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

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

xcode ios7
3个回答
4
投票

这为我解决了问题:

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

0
投票

我唯一想到的解决方案是关闭弹出窗口,然后自动以所需的新大小再次显示它。对于iOS 8,我也遇到了麻烦,因为iOS 8的内容大小不会缩小。宽度缩小,但高度仅对我而言增加。

看看

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

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

解决方案:

好,这是我的解决方案。在显示弹出框控制器的视图控制器中,可以设置一个名为“ 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)];

0
投票

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

override func viewWillAppear(_ animated: Bool) {
    self.navigationController?.preferredContentSize = myControllerSize
}
© www.soinside.com 2019 - 2024. All rights reserved.