2014-07-07 73 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,它也可以很好地工作。

相关问题