在使用自动布局的同时animation视图宽度

我正在使用自动布局来定位自定义进度栏(它只是一个背景颜色的UIView)。 我没有使用正确的进度条,因为我不想要完全自定义它,以满足我的需要时,UIView就足够了。

无论如何,我已经告诉XCode将进度条放在左边,并且离底部有一定的距离。 这正确定位,但是当我animation的宽度没有任何反应。 如果我创build一个新的UIVIew然后animation,它能正常工作。 约束是否阻止了这种animation? 宽度根本没有限制

[UIView animateWithDuration:startingGameSeconds delay:0.0 options:UIViewAnimationOptionCurveLinear animations:^(void) { progressBar.frame = CGRectMake(progressBar.frame.origin.x, progressBar.frame.origin.y, 320, progressBar.frame.size.height); } completion:^(BOOL finished){ }]; 

当你使用自动布局时,你不应该再使用setFrame:方法。 当你想animation的“框架”,你将不得不animation的约束。 我想你的自动布局约束是在Interface Builder中定义的。 首先,确保将宽度布局约束添加到进度条。 接下来,为此宽度布局约束创build一个IBOutlet。 你现在可以像这样animation约束:

 self.progressBarWidthLayoutConstraint.constant = 320; [UIView animateWithDuration:1 animations:^{ [self.view layoutIfNeeded]; }];