2013-04-22 43 views
1

我在自定義開發的UI控件中使用tableview。
我的tableView的默認框架是{0,0,0,0} ..所以它是不可見的..我使用UIview的動畫類方法與塊(animateWithDuration:延遲:..等..)動畫這個tableview「放入屏幕」。動畫塊只包含frame.size變爲{0,0,320,250}。顯然,隨着tableview框架的改變,幾個單元格變得可見。最終佈局渲染動畫,同時呈現tableview

此外,我有一個自定義的UIView其中有四個UILabels。標籤貼緊底部。 在cellForRowAtIndexPath中:我將此自定義視圖添加到單元格的內容視圖,並調整此自定義視圖的大小以匹配內容視圖框架。

customView.frame = cell.frame; 
[cell.contentView addSubview:customView]; 

我的問題是,由於細胞的不同的高度,(在heightForRowAtIndexPath解決)... 特別是電芯的特定的自定義視圖改變它的框架,有效幾個像素移動標籤垂直向下,在主要動畫期間。

我希望他們能在自己的位置已經當我提出的實現代碼如下。〜

如何實現這一目標?

+0

[autoresizingMask](http://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/instp/UIView/autoresizingMask) – 2013-04-22 12:13:32

+0

什麼樣的視覺效果你要去這裏嗎?這聽起來像是你可能想要更多,如果就地滑動效果(其內容相對於移動視圖保持原位),而不是成長到位(內容必須從零開始並延伸)。如果是這樣的話,也許你的桌子應該保持它的*尺寸*不變並且從其他地方開始動畫化*位置*。 – rickster 2013-04-23 05:00:24

回答

0

您需要使用電池的autoresizingMask屬性,或:

您可以創建自定義表格視圖單元格,添加這些意見,並處理在細胞的layoutSubviews。

+0

我希望標籤不被動畫到最終位置。當主表視圖的動畫發生時,我希望它們在那裏出現。所以問題不在於佈局規則,而在於爲什麼標籤以動畫方式移動到最終位置,以及如何在單元格內進行佈局而不是動畫。 – 2013-04-22 12:58:54

+0

您有兩個選擇來解決這個問題 - 正如我所說 - > layoutSubviews可以幫助您避免通過給他們固定的大小和位置來動畫他們。 第二種選擇是等待動畫結束,然後才添加它們。 (只需要將一個標誌放在動畫reloadData的末尾或其他東西)。 視圖動畫化爲它們的最終位置,因爲如果您在動畫中更改表格的框架,那麼這些單元格內和tableView內部的所有layoutSubivews也都會動畫。爲了避免這種情況,您需要以某種方式覆蓋layoutSubviews或最終添加它們。 – 2013-04-22 13:10:05

+0

我將相應的代碼移到了layoutSubviews中,它幫助了,現在沒有動畫了,謝謝。 – 2013-04-24 06:37:47