ios - 调整 UIView 大小时动画无法按预期工作

标签 ios objective-c cocoa-touch uiview uianimation

在我们的问题模块中,当用户单击由 tableview 表示的答案时,我需要调整 UIView 的大小和动画。我已经阅读了一些相关问题并应用了他们的解决方案,但没有一个对我有用。

问题是 uiview 不会在第一次点击时出现,但如果用户点击相同的答案两次或更多次,它就会出现,因为在第二次点击相同的答案时不会改变框架。

所以基本上,如果答案的反馈发生变化,将重新计算 uiview 的高度,我猜它会阻止动画。

我的 View 层次结构: http://i.imgur.com/Oho6Hob.png

改变 View 和 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 参数是相关标签或 TextView 的计算高度

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

非常感谢您的帮助。 谢谢!

最佳答案

花了一个星期后,我添加了一个什么都不做的约束。我不知道为什么,但它解决了动画阻塞问题,而且即使我删除了 layoutIfNeeded,它也能完美运行。

关于ios - 调整 UIView 大小时动画无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24605386/

相关文章:

ios - 重新加载 TableView 后未获取 TableView 数据

ios - swift ios tabBar didSelectItem 呈现登录屏幕

ios - 日期类型的dateFormatter字符串2013-03-24T02:15:23-08:00 + objective-c

iphone - 在 obj-c 中将 NSData 加密为 NSString?

ios - 悬停时在 CPTPlotSymbol 上显示工具提示

ios - 在调用警报 Controller 后转到下一个 View Controller

ios - Swift - 如何在键盘抬起时滚动 collectionView 的内容

ios - iPhone UITextField - 更改占位符字体和文本颜色

iPhone :implement shake gesture

ios - 如何为多点触控实现n个对象;游戏的速度、移动和交互性