在iOS中为容器视图内的图像视图设置动画?
我正在尝试在容器视图中设置图像视图的动画。 容器视图是方形的,与屏幕中心对齐。我的容器中确实有一个图像视图。我的图像视图的位置显示在下面的屏幕截图中。(超级视图是我的容器视图) 我想在容器内设置图像视图的动画,如从顶部0到底部0,因此我尝试从顶部0到顶部最大值(即容器视图的高度)设置动画,但效果不理想。我期望的输出类似于图像视图应该从上到下和反向连续地在容器视图中设置动画 我尝试的动画方法是在iOS中为容器视图内的图像视图设置动画?,ios,objective-c,autolayout,ios-autolayout,Ios,Objective C,Autolayout,Ios Autolayout,我正在尝试在容器视图中设置图像视图的动画。 容器视图是方形的,与屏幕中心对齐。我的容器中确实有一个图像视图。我的图像视图的位置显示在下面的屏幕截图中。(超级视图是我的容器视图) 我想在容器内设置图像视图的动画,如从顶部0到底部0,因此我尝试从顶部0到顶部最大值(即容器视图的高度)设置动画,但效果不理想。我期望的输出类似于图像视图应该从上到下和反向连续地在容器视图中设置动画 我尝试的动画方法是 int maxTop = self.containerView.frame.size.height/2
int maxTop = self.containerView.frame.size.height/2;
self.topConstraint.constant = maxTop;
[self.imageView setNeedsUpdateConstraints];
[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionRepeat|UIViewAnimationOptionAutoreverse animations:^{
[self.imageView layoutIfNeeded];
} completion:nil];
编辑:
这是当前的GIF输出。它没有移动到最大高度
试试看
[UIView beginAnimations:nil context:nil;
[UIView setAnimationDuration:0.5];
[self.topConstraint.animator setConstant:maxTop];
[UIView commitAnimations];
正如在原始代码中一样,您没有在动画中设置约束的常量动画应该在ViewDidDisplay之后启动,以便父视图可以正确对齐自身 我的图像视图顶部空间为0。图像不正确可能您需要调用LayoutIfNeed for self,而不是imageView?因为imageView是self(containerView)的子视图,layoutIfNeeded仅适用于子视图。另外,您可以添加具有不同优先级的顶部(0)和底部(0)约束,并设置约束优先级的动画,而不是常量。@Sega Zero,这很有意义。让我试试你的建议way@Sega-很遗憾,这不是预期的效果。我尝试将layoutIfNeeded添加到容器视图:(是否为imageView设置了高度约束?我已经做了一个测试,您的代码正在按预期工作。如果您调用layoutIfNeeded…我们对约束所做的所有更改都将发生。无需在动画块内更改约束。。