我使用AutoLayout显示了3个UIView。
View 2有一个约束,它将Top Equal定位到View 1的Bottom 视图3有一个约束,它将Top Equal定位到View 2的Bottom
非常简单的东西,下面是一张图片,显示了视图2上的常量约束动画。
问题在于View 3立即占据了最终位置。为什么在动画期间它不会停留在视图底部2?
黑色空间是无色区域,最终将由当前的动画视图2填充
我正在使用Monotouch,执行动画的代码是
// calendarDateBrowseYConstraint Is View 2
this.calendarDateBrowseYConstraint.Constant = value;
UIView.Animate(
5.25f,
0.0f,
UIViewAnimationOptions.TransitionFlipFromBottom,
() =>
{
this.calendarDateBrowse.LayoutIfNeeded();
},
null);
答案 0 :(得分:4)
请确保在容器视图中调用LayoutIfNeeded()
布局。你没有提到你的视图层次结构,但我认为你有类似的东西:
ViewController:
-view
---myContainerView
------label
------viewWithCalendar
------viewWithTableViewOrTableView
调用动画的正确方法是否正确(首先是简单动画):
this.calendarDateBrowseYConstraint.Constant = value;
UIView.animateWithDuration(durationTime) {
myContainerView.layoutIfNeeded()
}
你的:
this.calendarDateBrowseYConstraint.Constant = value; UIView.Animate(
5.25f,
0.0f,
UIViewAnimationOptions.TransitionFlipFromBottom,
() =>
{
myContainerView.LayoutIfNeeded();
},
null);
答案 1 :(得分:0)
在LayoutIfNeeded()
中引用主视图&确保动画没有在后台执行。