2013-07-09 40 views
5

我有一個自定義的單元格,裏面有一個子視圖,從服務器獲取內容後,一旦響應出現,就會增加高度。如何在動畫的同時增加細胞高度和子視野高度?

所以我用動畫增加了這個子視圖的高度,並且在完成動畫時,我發送一個委託消息給viewController。

在此代表我設置新的值實例變量的單元格高度和呼叫

[tableView beginUpdates]; 
[tableView endUpdates]; 
後剛剛重新調整與流暢的動畫新的高度細胞

。 ,但由於這個委託方法在前一個動畫的完成塊中被調用,所以在它之後發生。

有沒有辦法讓他們倆一起順利發生?

+0

您是否嘗試自動調整子視圖的細胞? – satheeshwaran

+0

但我的問題是我只會知道子視圖調整到新高度的單元格的高度,或者您基本上告訴我要通過委託調用來調整單元格的大小,並讓子視圖調整爲使用自動調整掩碼而不是設置我自己動畫的框架? 嗯...我沒有嘗試這個,似乎是一個好主意。 –

回答

0

您應該在1動畫功能中製作動畫。 當您收到新的起始高度動畫(你可以使用層變換)

1

只是

1)直接更改子視圖高度沒有動畫,

2)設置單元格的新cellHeight在heightForRowAtIndexPath

and

3)用動畫更新表格。如果這樣做,子視圖和單元格都將正確動畫。

1

使用NSLayoutConstraint ..所以當一個單元格自動改變其高度和寬度時,它的子視圖也會改變它的高度和寬度。

NSLayoutConstraint *myConstraint1 = [NSLayoutConstraint constraintWithItem:cell 
            attribute:NSLayoutAttributeWidth 
            relatedBy:NSLayoutRelationEqual 
            toItem:subView 
            attribute:NSLayoutAttributeWidth 
            multiplier:1.0 
            constant:-5]; 

NSLayoutConstraint *myConstraint2 = [NSLayoutConstraint constraintWithItem:cell 
            attribute:NSLayoutAttributeHeight 
            relatedBy:NSLayoutRelationEqual 
            toItem:subView 
            attribute:NSLayoutAttributeHeight 
            multiplier:1.0 
            constant:-5]; 

[cell addConstraint:myConstraint1]; 
[cell addConstraint:myConstraint2]; 

根據您的需要調整constant

希望這會幫助你。

+0

這些AutoLayout約束? 我沒有使用AutoLayouts。 –

+1

不...... NSLayoutConstraint只定義屬性之間(高度,寬度等)的兩個視圖 的關係 - http://developer.apple.com/library/ios/#documentation/AppKit/Reference/NSLayoutConstraint_Class /NSLayoutConstraint/NSLayoutConstraint.html –