4

我正在使用自动布局来定位自定义进度条(它只是一个带有背景颜色的 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){
                 }];
4

1 回答 1

8

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

self.progressBarWidthLayoutConstraint.constant = 320;

[UIView animateWithDuration:1 animations:^{
    [self.view layoutIfNeeded];
}];
于 2013-09-12T15:35:00.623 回答