2013-04-18 82 views
2

我在彈出窗口中顯示內容視圖時遇到了一些問題。我正在使用下面的代碼來設置與視圖控制器,我從故事板實例化彈出窗口。視圖控制器在我呈現酥料餅是一個導航控制器內:iPad:內容視圖未調整大小以適應彈出窗口

MyViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MyViewController"]; 
    viewController.contentSizeForViewInPopover = CGSizeMake(382, 502); 
    UIPopoverController *popover = [[UIPopoverController alloc]initWithContentViewController:viewController]; 

    self.popoverController = popover; //self.popoverController is a private property of type UIPopoverController 
    [self.popoverController presentPopoverFromBarButtonItem:self.navigationItem.leftBarButtonItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

這裏談到的問題:當我點擊左邊欄按鈕的酥料餅的顯示與正確的內容正確的尺寸,但內容視圖不會調整爲彈出窗口的大小。只有「被popover覆蓋」的內容視圖的片段纔可見。

我與表視圖有相同的過程,這是完美的工作 - 表適合popover。我也嘗試設置popover控制器本身的大小,就像建議here一樣。我試用了受影響的視圖控制器的彈簧和撐杆的一些設置。但結果總是一樣的。

現在我真的江郎才盡了什麼,我可以嘗試,或什麼,我可能做錯了/失蹤...幫助:(

提前感謝!

回答

1

一個TableView中自行調整至容器視圖控制器的尺寸將其放入。 這是一個UITableViewController的一個特點。 當您通過UIPopoverController呈現的TableView中,酥料餅的決定表的大小。

這種機制並不適用於所有的工作視圖,因此您需要將視圖本身的大小設置爲好。

+0

非常感謝。有時解決方案是如此接近:)我終於得到它與您的提示和從[這裏]的說明(http://stackoverflow.com/questions/11161909/how-to-use-storyboard-to-make-popover-那麼可以在代碼中使用)我也嘗試過通過IBOutlet掛鉤視圖控制器的視圖,並在實例化後以編程方式設置大小,但這根本不起作用。你能指點我一種方法來完成在代碼中而不是在Interface Builder中調整視圖控制器視圖的大小嗎? – codingPanda

+0

非常歡迎!一週前我被困住了。如果讓您自己的ViewController調整視圖的大小,調整_should_的大小。另外你可能想給它一個'[viewController setNeedsDisplay];'來觸發這個過程。(請接受提高我的代表的答案) – uulhaa

+0

非常感謝。 – uulhaa

0

iOS 6和iOS 7之間有一些變化,意味着視圖並不總是按預期調整大小。可以使用許多不同的方法和技術來提供期望的行爲。這些包括通過自動調整掩碼提供指導:

// Resizing behaviour 
self.view.autoresizingMask=UIViewAutoresizingFlexibleWidth+UIViewAutoresizingFlexibleHeight; 

有時還需要告知父視圖調整子視圖的大小。

self.view.autoresizesSubviews=YES; 

此外馬特·紐伯格(編程的iOS 7)告訴我們如何防止內容被隱藏的導航欄(和工具欄)下,使用以下:

// Stops the view going underneath the navigation bars 
self.edgesForExtendedLayout=UIRectEdgeNone; 

再有就是:

[self.view setNeedsLayout]; 

用於重繪的方法。第一步是瞭解所有這些奇怪的和奇妙的方法存在,其次是找出最經濟的實施,讓他們都爲你工作。

相關問題