preferredContentSize不收缩

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

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

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


这为我解决了它:

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

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

看一下

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

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

解:

好的,这是我的解决方案。 从你展示popover控制器的视图控制器,你可以设置一个叫做“resetContentSize:(CGSize)size”的委托。 例如在您呈现视图控制器的头文件中:

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

在你展示popover控制器的实现文件中,你可以设置委托

self.popoverController.delegate = self;

从你的popover控制器,你可以在头文件中添加PopoverDelegate

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

并在您的实现文件中调用委托方法:

[popoverDelegate resetContentSize:CGSizeMake(320.0f,205.0f)];
链接地址: http://www.djcxy.com/p/15993.html

上一篇: preferredContentSize does not shrink

下一篇: contentInset for QLPreviewController