我正在使用自动布局来定位自定义进度条(它只是一个带背景颜色的UIView)。我没有使用正确的进度条,因为我不想在UIView就足够的时候完全自定义它。
无论如何,我告诉XCode将进度条放在左边,距离底部一定距离。这可以正确定位,但是当我为宽度设置动画时没有任何反应。如果我创建一个新的UIVIew然后动画它正常工作。约束是否阻止了动画的制作?在所有
的宽度上没有约束[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){
}];
答案 0 :(得分:8)
当您使用自动布局时,您不应再使用setFrame:
方法。如果要为“框架”设置动画,则必须为约束设置动画。我想您的自动布局约束是在Interface Builder中定义的。首先,确保在进度条中添加了宽度布局约束。接下来,为此宽度布局约束创建IBOutlet。您现在可以像这样设置约束:
self.progressBarWidthLayoutConstraint.constant = 320;
[UIView animateWithDuration:1 animations:^{
[self.view layoutIfNeeded];
}];