2014-07-07 90 views
1

在我們的問題模塊中,當用戶單擊由tableview表示的答案時,我需要調整UIView和動畫的大小。我已經閱讀了一些相關的問題並應用了他們的解決方案,但他們都沒有爲我工作。在調整UIView大小時動畫無法正常工作

問題是uiview沒有出現在第一次點擊,但如果用戶點擊相同的答案2次或更多,它出現,因爲在第二次點擊相同的答案不會改變框架。

所以基本上如果答案的反饋改變,uiview的高度將被重新計算,我想它是阻止動畫。

我視圖層次: http://i.imgur.com/Oho6Hob.png

方法,它改變了看法和TextView的約束:

self.feedbackLabelWrapperHeight.constant = height + 45; 
self.feedbackViewHeight.constant = height + 45 + 12; 
int y = height; 

[self.feedbackView setFrame:CGRectMake(50,self.scrollView.frame.size.height + self.scrollView.frame.origin.y -(y+40),self.feedbackView.frame.size.width,(y+40))]; 

動畫製作方法:

[UIView beginAnimations:@"feedback" context:NULL]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
[UIView setAnimationDuration:0.2]; 
[UIView setAnimationDelay:delay]; 
[self.view layoutIfNeeded]; 
[UIView commitAnimations]; 
self.isFeedbackViewVisiable = YES; 

我打電話didSelectRowAtIndexPath方法這兩個方法方法按以下順序排列: 和labelHeightOfResponse參數是計算的高度的相關標籤或文字視圖

[self setFeedbackConstraintHeight:labelHeightOfResponse]; 
[self feedbackViewAppearAnimationWithDelay:0.2 yPosition:labelHeightOfResponse]; 

我真的很感謝這裏的幫助。 謝謝!

+0

順便說一下,在日誌中計算視圖的位置和大小似乎是正確的。 –

+0

嘗試設置你的動畫內新框架的計算,所以不用調用layoutIfNeeded – Jasper

+0

只是試過你的建議,但不幸的是它也沒有工作。 @JasperPol –

回答

2

花了一個星期後我添加了一個什麼都不做的約束。我不知道爲什麼,但它解決了動畫阻塞問題,而且,即使我刪除了layoutIfNeeded,它也可以很好地工作。

相關問題