2013-05-09 35 views
3

所以我就實現自己,發現這個答案確認:防止動畫時動態調整酥料餅

Prevent contentSizeForViewInPopover from animating

基本上我在一個類似的船,我要動態地調整我的酥料餅的,這取決於如何我必須顯示很多數據。我也會在popover視圖移動到位時獲取此動畫操作。問題是,我無法在調用者/父級中設置彈出窗口的內容大小,因爲在調用viewDidAppear或viewDidLayoutSubviews之前,文本視圖的內容視圖的大小以及彈出窗口中的文本視圖的框架都是已知的,但當然現在已經太晚了,彈出窗口已經開始顯示,因此我收到了這個不需要的動畫。

我在彈窗視圖控制器類中動態設置文本視圖的大小,以適應文本視圖顯示的數據量,並且這隻適用於定義/已知/ /您的幀大小的位置當它在視圖生命週期中還沒有達到那個點時想要說出它。

我應該提到,我有我的視圖控制器,並查看所有在故事板中完成。

這是否有意義?希望我解釋得很好。任何幫助或建議不勝感激。

編輯這裏是我的viewDidLayoutSubviews方法從視圖控制器我加載在彈出窗口 - 希望這會說清楚。第一次加載時,如果我不在viewDidLayoutSubviews或viewDidAppear中執行此操作,則我的2個文本視圖的框架爲CGRectZero,文本視圖不會正確調整內容大小,並且彈出窗口大小也不正確:

- (void)viewDidLayoutSubviews 
{ 
[super viewDidLayoutSubviews]; 

self.physicianDataNewValueTextView.text = self.physicianDataNewValue; 
CGRect frame = self.physicianDataNewValueTextView.frame; 
frame.size.height = self.physicianDataNewValueTextView.contentSize.height; 
self.physicianDataNewValueTextView.frame = frame; 

self.physicianDataOldValueTextView.text = self.physicianDataOldValue; 
frame = self.physicianDataOldValueTextView.frame; 
frame.size.height = self.physicianDataOldValueTextView.contentSize.height; 
self.physicianDataOldValueTextView.frame = frame; 

self.contentSizeForViewInPopover = CGSizeMake(384.0f, self.physicianDataOldValueTextView.frame.size.height + 75.0f); 
} 

回答

2

所以我決定使用代表團。我沒有重新設置視圖控制器中彈出窗口的內容大小,而是使用新大小調用我的委託(這是包含視圖控制器),因此我可以在那裏將動畫屬性設置爲NO。效果很好。

+0

很好的幫助,謝謝!我在委託方法中使用的代碼是:'[self.chooseEquipmentPopoverController setPopoverContentSize:size animated:NO];' – 2013-07-29 09:39:45

+0

很高興此貼有幫助。如果你不介意投我的答案,這將是偉大的,謝謝(除非你已經做到了)。 – fogwolf 2013-08-05 18:19:56