2013-09-22 61 views
7

我使用UIPopoverController來彈出一個窗口。我使用preferredContentSize來設置大小。然後,我使用Push一個更大尺寸的新視圖控制器。當子視圖彈出時,我喜歡將窗口恢復到原始大小。但似乎不起作用。preferredContentSize不縮小

我已經把self.preferredContentSize = myWindowSize;但似乎無法恢復。

在iOS6或之前,我將contentSizeForViewInPopover設置爲CGSizeZero,然後設置適當的大小。但在iOS7上,它會使彈出窗口消失。

回答

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與委託協議

解決方案:

好吧,這裏是我的解決方案。從你展示popover控制器的視圖控制器,你可以設置一個叫做「resetContentSize:(CGSize)size」的委託。例如在呈現視圖控制器的頭文件:

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

在你目前的酥料餅的控制器實現文件中,你可以設置委託

self.popoverController.delegate = self; 

從你的酥料餅的控制器,可以在添加PopoverDelegate頭文件

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

,並調用委託方法在您的實現文件:

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

這解決了這個問題對我來說:

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