編輯:我最初問這個問題關於一般視圖調整大小,但我現在意識到它是更特定於tableViews的東西。如何在沒有修改行/子視圖的情況下動態調整tableView的大小?
假設一個tableView最初有一個框架(0 0,320 460),即它填充了整個iPhone屏幕。爲了調整的tableView的高度和動畫調整大小,我下面的代碼映射到一個按鈕:
[UIView beginAnimations:@"Animation" context:nil];
[UIView setAnimationDuration:3];
CGRect rect = self.table.bounds;
rect.size = CGSizeMake(320, 200);
self.table.bounds = rect;
self.table.center = CGPointMake(160, 100);
[UIView commitAnimations];
此代碼將動畫表的高度下降,但......任何動畫發生之前,該表將夾關閉所有不適合新邊界的表格單元格。因此,給定一個最初適合10行的tableView,上面的動畫代碼將導致這一系列事件:
- tableView立即刪除底部5行。請注意,它僅刪除行 - tableView的背景仍然延伸到底部。
- tableView按預期爲表格的其餘部分設置高度變化。
這不是我正在尋找的行爲。而不是立即裁剪底部的5行,tableView應該保持它的行就位,而桌子的底部邊緣只是向上動畫。
基於我所看到的行爲,似乎tableView正在獲取某種消息,在發現其邊界將要更改後立即刷新其行。有人可以對這種行爲作出一些說明,我怎樣才能避免它?
是的,試過了,它和剛纔改變框架的效果相同(在動畫開始之前,表格將下半部分剪掉)。我有一種感覺,它與scrollView的contentSize有關,但一直沒能弄清楚什麼。 – iPhoneToucher 2009-10-13 16:57:39