在我们的问题模块中,当用户点击由tableview表示的答案时,我需要调整大小和动画UIView。我读了一些相关的问题,并应用了它们的解决方案,但它们都不适合我。
问题是uiview不出现在第一次点击,但如果用户点击相同的答案2次或更多次,它出现,因为在第二次点击相同的答案不改变帧。
基本上如果答案的反馈改变,uiview的高度会被重新计算我猜它是阻塞动画
my view hierarchy:https://i.stack.imgur.com/gwnUp.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方法中按以下顺序调用这两个方法:和labelhightofresponse参数是相关标签或textview的计算高度
[self setFeedbackConstraintHeight:labelHeightOfResponse];
[self feedbackViewAppearAnimationWithDelay:0.2 yPosition:labelHeightOfResponse];
我真的很感激这里的帮助。谢谢!
花了一个星期后,我添加了一个什么都不做的约束。我不知道为什么,但它解决了动画阻塞,而且它工作得很好,即使我删除了layoutIfNeeded。